linux下模仿VS 使用自定义_DEBUG我写了一个log库,这样定义的.h文件#ifdef _DEBUG#define WRITELOG(msg) wr
linux下模仿VS 使用自定义_DEBUG
我写了一个log库,这样定义的.h文件
#ifdef _DEBUG
#define WRITELOG(msg) writelog(msg)
#else
#define WRITELOG(msg)
#endif
我的本意是,假设在main文件里#define _DEBUG;那么,这个工程,所有的.c文件里,我都可以用
WRITELOG这个宏来写日志.(这个想法可能本身就是错的.我想知道VS那个架构,它在哪弄了一个_DEBUG,就可以在整个工程里来使用debug函数了,先不考虑这个问题)
现在的问题是,我在a.c文件里 include了log.h,在a.c文件的函数里使用了WRITELOG,即使我不定义_DEBUG,WRITELOG也应该是定义的啊,只不过什么也不做.但它报错,说WRITELOG未定义.
即使我在a.c里define了_DEBUG也还是报WRITELOG未定义.
这是为什么啊?
[解决办法]VS是默认的给编译器的_DEBUG宏,Linux可以用Makefile确定
[解决办法]gcc可以用-D选项指定_DEBUG宏,这样和VC在工程中配置是一回事。
[解决办法]现在的问题是,我在a.c文件里 include了log.h,在a.c文件的函数里使用了WRITELOG,即使我不定义_DEBUG,WRITELOG也应该是定义的啊,只不过什么也不做.但它报错,说WRITELOG未定义.
什么 compiler ?
[解决办法]你改变下头文件包含顺序
把宏定义放在#include头文件前面看看
[解决办法]#define WRITELOGR(msg...) writelog_r(msg)