如何判断当前是什么操作系统?
#if defined(_AIX) // IBM AIX
... ...
#endif
#if defined(__sun) // SUN OS
... ...
#endif
linux下定义了 "linux", Sco Openserver下定义了unix
上面的方法有时候不是很确定,也不好自己掌握和控制,下面探讨一下另一个方法:
在UNIX下有一个uname的命令,在不同的操作系统下有不同的返回, 例如:
SCO: SCO_SV
Linux: Linux
AIX: AIX
Unixware: UnixWare
可以在makefile文件中增加如下句子来判断当前的操作系统类型,和编译选择:
OSTYPE=`uname`
CFLAGS_SCO = -D SCO_SV
CFLAGS_LINUX = -D AIX
prog:
@if [ "$(OSTYPE)" = 'SCO_SV' ];then make prog1;else make prog2;fi
prog1:
$(CC) -o tt tt.c $(CFLAGS_SCO)
prog2:
$(CC) -o tt2 tt2.c $(CFLAGS_AIX)
如上在编译命令行中增加-D SCO_SV的定义, 程序的源代码中可以如下使用:
#ifdef SCO_SV
typedef unsigned int socklen_t;
#endif
如此,源代码就很容易的适应不同的操作系统了。
阅读(5792) | 评论(0) | 转发(0) |