C / C ++静态巫毒教

时间:2016-07-15 14:53:22

标签: c++ c static

我正在开发一个包含C和C ++元素的程序。我不能说我是这个领域的专家,但我注意到一个静态变量不是静态的。具体来说,我异步接收事件,然后将事件推送到静态队列,同时主线程弹出该静态队列中的事件。当我将事件推送到静态队列时,我可以清楚地告诉队列增加1并且数据正确填充。当我从静态队列中轮询数据时,数据将被记录,并且队列大小为0.为了确认它们作为不同的实例,我从异步和轮询的角度打印它们的值,即使变量有静电,它们也保持不变附在它上面。当我从.cpp文件更新队列时,静态队列存储在.c文件中。我几乎肯定这不会导致问题,但谁知道呢。我被困了

以下是我存储在interactivity_mapping文件中的两个变量...

 $model = $connection->createCommand('SELECT * FROM Your_table');
 $yourModel = $model->queryAll();

以下是存储在导入函数c file

中的extern函数
/* Pointer storage */
static sdy_pointer_event_t pointer_events[MAX_POINTERS] = {0};
static int last_pointer_event = 0;

基本上在interactivity_mapping文件中有extern导入函数c文件的实现。我异步调用的函数不是这个导入函数extern c文件的一部分,而轮询函数是,并且被称为aol_pointer。我不知道这是否会导致这种不正确的行为。这个节目非常大,所以我不认为我可以提供更好的画面而不会把整个事情都放在这里。

1 个答案:

答案 0 :(得分:2)

静态存储类意味着对象的生命周期是程序的整个执行。变量的static规范意味着它具有静态存储类,符号(变量名称)仅在定义的范围内可见,即当它是块时在函数中,以及在全局范围内的翻译单元(.c文件)中。

static并不意味着该元素不能通过函数或来自符号不可见的地方的指针来使用。