[英]Should I declare member variables that are going to be used by C functions as static?
如果我有一个成员m_data
的类A
,当我知道它将在第三方C函数中使用时,是否需要将其声明为static
或具有C链接?
struct Data
{
int a;
float b;
double c;
};
class A
{
public:
Data m_data;
};
例:
我有一个类Foo
,它正在执行以下操作(使用FreeRTOS计时器):
class Foo
{
public:
void stop_timer() { xTimerStop(&m_timer, 0); }
private:
TimerHandle_t m_timer;
}
我正在调试一些底层的怪异现象,并且担心(可能是错误地)将C ++成员变量传递给FreeRTOS函数会导致我遇到问题。
class Foo
{
public:
void stop_timer() { xTimerStop(&m_timer, 0); }
private:
TimerHandle_t m_timer;
}
你并不需要添加static
到m_timer
这里。 如stop_timer()
是其成员函数class Foo
,我假定的每个实例Foo
将具有其自己的计时器,它将传递给xTimerStop()
的所有实例之间共享,而不是一个定时器class Foo
-它是(唯一事)什么static
会实现。
您也不需要此处的任何extern "C"
声明; C部分( xTimerStop()
的实现) xTimerStop()
不会“看到”符号m_timer
; 它“看到”的只是它的地址 (由stop_timer()
代码传递),因此此时的链接无关紧要。 (但是请参阅下面有关回调的第二条评论,它确实需要extern "C"
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.