读书人

施用#if #elif #endif使用gcc编译不

发布时间: 2013-04-20 19:43:01 作者: rapoo

使用#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

读书人网 >C语言

热点推荐