新运算符不具有全局变量

时间:2019-02-01 06:30:02

标签: c++ reference new-operator stm32 newlib

我试图通过声明以下内容使用new运算符创建全局引用 tNMEA2000 &NMEA2000=*(new tNMEA2000_stm());在任何功能之外。

当我在任何函数之外使用tNMEA2000 &NMEA2000=*(new tNMEA2000_stm());时,最终将其设置为NULLPTR。如果我在函数内部声明它,则它可以正常工作。

这不是实际的代码,而是简化的版本。我还没有包含实际的类定义

#include "nmea_wrapper.h" //This defines the tNMEA2000_stm class
#include "NMEA2000.h" //This defines the tNMEA2000 class that tNMEA2000_stm inherits from

tNMEA2000 &NMEA2000 = *(new tNMEA2000_stm()); //This ends up with a NULLPTR

void setup(){
  tNMEA2000 &NMEA2000 = *(new tNMEA2000_stm()); //This correctly initializes the memory
}

据我了解,在全局范围内声明它应该起作用,而不是将其设置为NULLPTR。 我不确定这是否是使用newlib的怪癖,而且我似乎找不到任何文档来告诉我一种方法是否有效。

0 个答案:

没有答案