#define cimg_use_jpeg 2
#ifndef cimg_use_jpeg
//code goes here
#endif
我真的不明白......
答案 0 :(得分:6)
每次发生与此类似的事情(所谓的不可能的事情)时,原因是:我在编辑器中看到的代码不是运行的代码。这可能在很多方面发生。
答案 1 :(得分:1)
无法执行。也许你运行不正确的可执行版本打印__DATE__
和__TIME__
以跟踪或记录有助于检测此类错误。
答案 2 :(得分:0)
要么你写
#define yoursymbol
#ifdef yoursymbol
或者你写
#define yoursymbol somevalue
#if yousymbol == somevalue
不要混合它们
编辑: 因为人们似乎误解了我的意思,这是一个澄清:当你编程时,重要的是编码,以便其他人理解你的意图是什么,所以如果你的意图只是检查一个符号是否被定义,那么指定一个数字会很困惑值。
答案 3 :(得分:0)
这应该像你期望的那样有效。假设#ifndef/#endif
被定义为预期,编译器甚至不会编译cimg_use_jpeg
块中的代码。
所以问题是,cimg_use_jpeg
是否按预期定义了?或者您是否正在简化您的问题,并通过简化提供实际可行的样本?
答案 4 :(得分:0)
@Anders K.这是有效的,即不执行正确的事情。代码产生“BAZ未定义”
#define FOO 2
#define BAR
int main(int argc, char* argv[])
{
#ifndef FOO
std::cout << "FOO is undefined" << std::endl;
#endif
#ifndef BAR
std::cout << "BAR is undefined" << std::endl;
#endif
#ifndef BAZ
std::cout << "BAZ is undefined" << std::endl;
#endif
}