MyMacros.h:
int const TESTING = 1;
#define INFO(MSG) fprintf(stderr, "INFO :: %s\n", MSG);
MyProgram.c:
#if TESTING
INFO("File 'data.dat' opened correctly.");
#endif
信息未打印到屏幕上。但是,如果我这样做:
#if TESTING < 1
它工作并打印消息。 Hunh ???
答案 0 :(得分:0)
您正在混淆预处理和编译。
C预处理器无法理解行int const TESTING = 1;
,它不知道TESTING
的值。实际上,C编译器都不能在编译时使用该值(与C ++不同,更好地支持const
表达式)。
C中的常见模式是使用#define
指令定义常量(同样,与C ++不同):
#define TESTING 1
请注意此行末尾没有分号。编译器需要分号,而不是预处理器。