在C ++中指向运行时对象的静态全局指针

时间:2016-12-10 18:30:28

标签: c++ pointers static

我正在开发一个使用this硬件驱动程序的嵌入式项目。我在这个库周围编写了一个包装器模块(C ++为C,没有对象),可以轻松地将它与我的项目集成。但是,为了简单起见,我将C包装器代码编译为C ++,以便从C语言调用C ++的问题。

基本上我尝试做的是有一个 init 函数,它初始化驱动程序代码并保持静态句柄,以便在同一个翻译单元中使用其他函数。我绝不是C ++专家,但我对目前的问题感到困惑。

这是我正在做的一个例子:

static ILI9341_t3 *tft;

void display_init(void){
    ILI9341_t3 _tft = ILI9341_t3(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO);
    _tft.begin();
    _tft.fillScreen(ILI9341_BLACK);
    _tft.setTextColor(ILI9341_YELLOW);
    tft = &_tft; 
}


void display_clear(void){
    tft->fillScreen(ILI9341_BLACK);
}

此代码编译没有问题,但 display_init 之后与屏幕的任何交互都没有结果。这种用法是否在C ++中未定义?在离开init函数的范围后,可能导致对象失效的原因是什么?

如果我将整个对象初始化放在静态上下文中,这段代码似乎有效,但我不相信这是最好的选择。

0 个答案:

没有答案