免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2361 | 回复: 7
打印 上一主题 下一主题

[C] 选择性编译之__LINUX__ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-25 13:28 |只看该作者 |倒序浏览
我有个代码需要跨平台跑,在freeBSD或Linux下。因此想到用

#ifdef __LINUX__
              //do things in linux
#else
             // do things in freeBSD
#endif

的方式来实现。我记得GCC会根据当前操作系统来判断编译哪个部分的代码的。
但是现实中似乎总是编译了freeBSD的部分。难道是__LINUX__不存在吗?

或者还有其他的解决办法?:wink:

论坛徽章:
0
2 [报告]
发表于 2009-06-25 13:36 |只看该作者
POSIX

论坛徽章:
0
3 [报告]
发表于 2009-06-25 13:36 |只看该作者
#ifdef _AIX        /* IBM AIX OS */
#define __THINK_AIX__
#endif

#ifdef __hpux        /* HP HP-UX OS */
#define __THINK_HPUX__
#endif

#ifdef __SVR4        /* Sun Solaris OS */
#define __THINK_SOLARIS__
#endif

#ifdef __FreeBSD__        /* Berkeley FreeBSD OS */
#define __THINK_FREEBSD__
#endif

#ifdef __linux        /* GNU Linux OS */
#define __THINK_LINUX__
#endif

#ifdef _WIN32        /* Microsoft Windows OS */
#define __THINK_WINDOWS__
#endif

/* Hardwares */
#ifdef __sparc        /* Sun Sparc Machine */
#define __THINK_SPARC__
#endif
可参考本人开源项目:
http://unix-center.org/projects/enigma1983

论坛徽章:
0
4 [报告]
发表于 2009-06-25 13:57 |只看该作者

回复 #3 enigma1983 的帖子

谢啦, 很强大的开源项目啊~

论坛徽章:
0
5 [报告]
发表于 2009-06-25 13:59 |只看该作者
原帖由 prolj 于 2009-6-25 13:36 发表
POSIX


隐者能说的具体点吗呵呵

论坛徽章:
0
6 [报告]
发表于 2009-06-25 14:08 |只看该作者

回复 #1 figo_net 的帖子

__LINUX__本来就不存在,是自己编译的

论坛徽章:
0
7 [报告]
发表于 2009-06-25 16:27 |只看该作者
自己定义得了。

论坛徽章:
0
8 [报告]
发表于 2009-06-25 16:36 |只看该作者
先明确一下__LINUX__是系统已经定义好的比如在linux头文件,还是要自己定义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP