#ifdef WIN32 #elif WIN64 #endif

时间:2014-08-22 16:14:31

标签: c-preprocessor conditional-compilation

我遇到过这样的some example code

#ifdef WIN32
   ...
#elif WIN64
   ...
#endif

#ifdef区块中,使用#elif表示#elif defined是否合法?

1 个答案:

答案 0 :(得分:9)

不,不应该。这并不是说一些不起眼的C编译器不会接受它,但它不是C标准的一部分。

通常,对于类似的内容,您可以使用#elifdef FOO(我从未在生产代码中看到过)或#elif defined(FOO)(就像您提到的那样)。

此代码似乎以奇怪的方式工作;它首先检查是否定义了WIN32,然后检查WIN64是否为非零。