gcc 4.4.4 c89
我正在尝试定义一些东西。如果它被定义我想做某事,否则我想做一些不同的事情。
#define PARSE_STRING
for(i = 0; i < NUMBER_OF_STRINGS; i++) {
#if defined (PARSE_STING)
/* run code for parsing the strings */
#else
/* run code that doesn't parse the strings
}
#endif
当我在我的函数中尝试上面的代码时,我似乎在我的代码中得到了其他错误。但是,如果我注释掉#define PARSE_STRING
它编译好了。我只是想知道我需要#define PARSE_STRING
吗?
非常感谢任何建议,
======使用更新的解决方案进行编辑
这样做会更好吗,而不是吗?
#define PARSE_STRING
for(i = 0; i < NUMBER_OF_STRINGS; i++) {
#if defined (PARSE_STRING)
/* run code for parsing the strings */
#elif defined (NO_PARSE_STRING)
/* run code that doesn't parse the strings
#endif
}
答案 0 :(得分:7)
您已经将预处理指令的交错与函数体的开头和结尾混合在一起:
}
#endif
应该是
#endif
}
答案 1 :(得分:2)
这是因为如果定义了它,你将不会有结束}
这将是语法错误。
答案 2 :(得分:2)
您已在其中一个条件
中包含for循环的结束括号#else
}
#endif
应该是
#else
//Stuff
#endif
}