【发布时间】:2014-02-02 08:10:26
【问题描述】:
我正在使用 Windows 中的 CodeBlocks 和最新版本捆绑的 MingGW 编译器使用 C 语言进行编程。我正在尝试使用一些编译器指令来演示条件编译。
下面是我的代码。但是,似乎代码块或 MinGW 不喜欢 #elif 部分。如果我将定义的宏值 DEBUG_MODE 设置为 3 或 2,那么 #elif 结构似乎都不起作用。
此外,代码块会使两个 #elif 结构内的代码变灰。我是否误解了这些编译器指令,或者不是所有版本的 C 都支持#elif?我知道我可以通过嵌套#if 和#else 结构来解决,但我想知道#elif 是否应该以这种方式工作。代码如下。
好的,所以最初我犯了一个小学生错误,并以错误的方式得到了我的条件逻辑。我现在已经修复了它,但为了完整起见,它是。
下面的修改代码 现在,代码块的行为大部分都符合我的预期。代码着色已关闭,但功能符合我的预期。
#include <stdio.h>
#include <stdlib.h>
#define DEBUG_MODE 3
char * trace;
char * traceDesc;
int main()
{
trace = "main method normal start";
traceDesc = "Main method runs the body of the program to demonstrate compiler directives #if and #elif ";
#if DEBUG_MODE <= 3
printf("Program Begun!\n");
#elif DEBUG_MODE <= 2
printf("trace message %s :", trace);
#elif DEBUG_MODE <= 1
printf("Description message %s :", traceDescr);
#endif
return 0;
}
【问题讨论】:
标签: c mingw codeblocks precompile