使用#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
[解决办法]
给我看看哪写了,你这是比较字符串呢还是数值呢,LINUX和WINDOWS都为0肯定是包含win的头文件了,所以vs你上面OS不改也能通过,
[解决办法]
这里WINDOWS和LINUX都是没有定义的标识,在#if里面都当做0 你OS无论是什么都会包含第一句。
你可以
#define OS SO
上面什么OS SO WINDOWS LINUX都是0