我遇到过这样的some example code:
#ifdef WIN32
...
#elif WIN64
...
#endif
在#ifdef
区块中,使用#elif
表示#elif defined
是否合法?
答案 0 :(得分:9)
不,不应该。这并不是说一些不起眼的C编译器不会接受它,但它不是C标准的一部分。
通常,对于类似的内容,您可以使用#elifdef FOO
(我从未在生产代码中看到过)或#elif defined(FOO)
(就像您提到的那样)。
此代码似乎以奇怪的方式工作;它首先检查是否定义了WIN32
,然后检查WIN64
是否为非零。