小编vap*_*ace的帖子

对于定义为0的宏,#ifdef和#if之间的细微差别

给出下面的C文件:

$ cat macros.c
#ifdef MACRO
#  error MACRO is defined
#else
#  error MACRO is undefined
#endif
#if MACRO
#  error MACRO is non-zero
#else
#  error MACRO is zero
#endif
Run Code Online (Sandbox Code Playgroud)

以下的预期产量是多少?

$ gcc           -c macros.c
$ gcc -DMACRO   -c macros.c
$ gcc -DMACRO=0 -c macros.c
Run Code Online (Sandbox Code Playgroud)

:这是我机器上gcc的预处理器.

$ gcc           -c macros.c
macros.c:4:4: error: #error MACRO is undefined
macros.c:9:4: error: #error MACRO is zero
$ gcc -DMACRO   -c macros.c
macros.c:2:4: error: #error MACRO is defined
macros.c:7:4: error: #error MACRO …
Run Code Online (Sandbox Code Playgroud)

c macros c-preprocessor

6
推荐指数
3
解决办法
6471
查看次数

标签 统计

c ×1

c-preprocessor ×1

macros ×1