施用#if #elif #endif,使用gcc编译不通过
使用#if #elif #endif,使用gcc编译不通过今天试验了下#if,#elif,#endif语句代码如下:#include stdio.h#d
使用#if #elif #endif,使用gcc编译不通过 今天试验了下#if,#elif,#endif语句 代码如下:
#include <stdio.h> #define OS LINUX #if OS==WINDOWS #include <windows.h> #elif OS==LINUX #include <unistd.h> #endif int main(){ printf("OS"); }但是在gcc里面编译提示没有windows.h这个头文件,这应该是说明预编译语句没有起效果吧。
然后我到windows环境下使用vc6.0编译(当然我把OS define成了WINDOWS),完美通过,这是怎么回事呢?gcc应该是支持#if 的啊。
[解决办法] 你把你的条件编译改成下面的语句,看看windows下还能不能编过?
#if OS==LINUX
#include <unistd.h>
#elif OS==WINDOWS
#include <windows.h>
#endif
[解决办法] 引用: 引用:OS==WINDOWS 能这样比较么 比较直观的是用 #define WINDOWS #ifdef WINDOWS #include ... #endif 可以啊,#if的使用规则里有写啊,再说vc6.0编译通过了啊 给我看看哪写了,你这是比较字符串呢还是数值呢,LINUX和WINDOWS都为0肯定是包含win的头文件了,所以vs你上面OS不改也能通过,
[解决办法] 这里WINDOWS和LINUX都是没有定义的标识,在#if里面都当做0 你OS无论是什么都会包含第一句。
你可以
#define OS SO
上面什么OS SO WINDOWS LINUX都是0