对于VS 2005的编译器,宏名相同但是定义不同时编译器没有任何warning提示。在这种情况下如何找出重复的宏定义在哪个文件中呢?
在源文件中引用某个头文件之后加上判断宏是否定义,并让编译器出错即可。比如源文件包含a.h,b.h,c.h,宏名为M。则
#include "a.h"
#ifdef M
#error "after a.h"
#endif
#include "b.h"
#ifdef M
#error "after b.h"
#endif
#include "c.h"
#ifdef M
#error "after c.h"
#endif
这样就可以通过编译器的报错提示知道是在引用了哪个头文件后开始有宏定义了。