Lin*_*nus 0 c optimization struct
调试优化代码似乎是不可能的.我花了太长时间试图超越编译器.由于编译器优化了我的代码,我很难做一个简单的检查,如果我的struct是否为null,请不要误解我的意思是我想保留-O3选项,如果可能的话加速我的代码,但是如果由于编译器优化,我不断收到很多错误,我可能会把它关掉.
我有一个线程,它将尝试从数组中将结构条目出列并将它们放入数据库中但由于某种原因结构已经过优化.
void *queue_func(void *param){
LogArgs* largs;
pthread_mutex_t *mx = (pthread_mutex_t*) param;
InitQueue();
while(!needQuit(mx)){
if((largs = Dequeue()) != NULL){ // the boolean result is true here
interrupt_log(largs->event, largs->rawtime); // yet largs is NULL here!!!
}
usleep(50000);
}
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
这里参考的是Dequeue函数和struct:
LogArgs* Dequeue(){
LogArgs* largs;
if(isEmpty()) return NULL;
else{
largs = &queue[++head % MAX_SIZE];
return largs;
}
}
Run Code Online (Sandbox Code Playgroud)
这是结构:
typedef struct {
time_t *rawtime;
char event[129];
} LogArgs;
Run Code Online (Sandbox Code Playgroud)
有没有办法防止拉格斯被优化?