0

我在头文件中为我编写的共享对象定义了一个 DEBUG_PRINT 宏,如下所示:

lib_mylib.h:

#ifdef DEBUG
#define DEBUG_TEST 1
#else
#define DEBUG_TEST 0
#endif

#define DEBUG_PRINT(fmt, args...) \
        do { if (DEBUG_TEST) fprintf(stderr, "%s:%d:%s(): " fmt, \
                __FILE__, __LINE__, __FUNCTION__, ##args); } while (0)

从使用这个库的 ac 文件中,我设置了

#DEFINE DEBUG 1

这导致 DEBUG_PRINT 语句在共享对象中被调用时成功使用。但是,当我在我的 c 文件中使用该语句时,它会编译但不会执行 - 这是为什么呢?

4

1 回答 1

0

预处理器是严格顺序的,必须在使用或检查宏之前定义它们。

于 2012-12-06T10:10:34.020 回答