config.h
[Copy to clipboard] [ - ]CODE:#ifndef __CONFIG_H__
#define __CONFIG_H__
#include <stdio.h>
#define USE_LIST
#endif
node.h
[Copy to clipboard] [ - ]CODE:#ifndef __NODE_H__
#define __NODE_H__
struct node
{
#ifdef USE_LIST
struct node* prev;
struct node* next;
#endif
int i;
};
#endif
1.h
[Copy to clipboard] [ - ]CODE:#ifndef __1_H__
#define __1_H__
#include "config.h"
#include "node.h"
void f1()
{
printf("in f1(), sizeof(struct node) = %d\n", sizeof(struct node));
}
#endif
2.h
[Copy to clipboard] [ - ]CODE:#ifndef __2_H__
#define __2_H__
#include "node.h"
#include "config.h"
void f2()
{
printf("in f2(), sizeof(struct node) = %d\n", sizeof(struct node));
}
#endif
test.cpp 可以注释或者不注释最开始的宏分别调用1.h和2.h中的两个函数打印出node的大小
[Copy to clipboard] [ - ]CODE:#define USE_1
#ifdef USE_1
#include "1.h"
#else
#include "2.h"
#endif
int main()
{
#ifdef USE_1
f1();
#else
f2();
#endif
return 0;
}
由于1.h和2.h对node结构体的大小计算不一致,造成了问题,找了几天终于找到了问题所在.
以后再遇到这样的问题,我的做法是把这些预定义的宏集中放在一个文件中,并且放在每个需要该头文件的文件中包含头文件的最开始位置.
恭喜一把。
上周偶也是这样,整了好几天,总算把BUG解决了。心里轻松了。
要是一直搞不定的BUG怎么办呢?
我的经验,没有任何头绪的时候,就尽量多的打印调试语句,逐渐的接近问题....同时,不要气馁.
QUOTE:原帖由 converse 于 2008-6-13 18:11 发表

我的经验,没有任何头绪的时候,就尽量多的打印调试语句,逐渐的接近问题....同时,不要气馁.
是啊。这个在单个程序运行时候还好一点。有的时间是几个程序都有关联的,执行起来加调试语句就要调整的地方多了。
学习
QUOTE:原帖由 Godbach 于 2008-6-13 18:14 发表

是啊。这个在单个程序运行时候还好一点。有的时间是几个程序都有关联的,执行起来加调试语句就要调整的地方多了。
会员注册
会员登录
个人空间