搜索
bottom↓
回复: 18

求此段程式碼的意思#if defined

[复制链接]

出0入0汤圆

发表于 2017-1-9 16:33:50 | 显示全部楼层 |阅读模式
本帖最后由 陳聖文 于 2017-1-9 16:38 编辑

#if defined(__linux__) || defined(__FreeBSD__)   /* Linux & FreeBSD */

/*---------------------- 一大段程式碼-----------------------------------------------------*/
/*---------------------- 一大段程式碼-----------------------------------------------------*/
/*---------------------- 一大段程式碼-----------------------------------------------------*/

#else         /* windows */

/*---------------------- 一大段程式碼-----------------------------------------------------*/
/*---------------------- 一大段程式碼-----------------------------------------------------*/
/*---------------------- 一大段程式碼-----------------------------------------------------*/

#endif


我常看到這種,但是#if defined,但是這樣編譯後不會浪費很多記憶體嗎?
為什麼還這麼多人用呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-1-9 16:37:39 | 显示全部楼层
从英语字面理解就可以了

出0入8汤圆

发表于 2017-1-9 16:45:21 | 显示全部楼层
预处理条件编译,最终只会有一个分支遗留下来。
你先去看看预处理的基础吧

出0入0汤圆

发表于 2017-1-9 16:45:22 | 显示全部楼层
Conditional compilation中条件不成立的部分根本不会被编译。没有任何代码产出,怎么可能浪费嘛

出25入84汤圆

发表于 2017-1-9 16:47:19 | 显示全部楼层
浪费的只是你的硬盘容量,你的記憶體不浪费。

出0入0汤圆

发表于 2017-1-9 16:48:20 | 显示全部楼层
楼上都已经说了,建议楼主看看预编译器相关知识

出0入0汤圆

 楼主| 发表于 2017-1-9 17:41:29 | 显示全部楼层
security 发表于 2017-1-9 16:45
预处理条件编译,最终只会有一个分支遗留下来。
你先去看看预处理的基础吧 ...


所以說它會在編義的時候只保留編譯器的那個做夜系統的版本嗎?

出0入4汤圆

发表于 2017-1-9 17:53:02 来自手机 | 显示全部楼层
陳聖文 发表于 2017-1-9 17:41
所以說它會在編義的時候只保留編譯器的那個做夜系統的版本嗎?

只保留有效的部分,其他不生成代码。

出0入8汤圆

发表于 2017-1-9 18:09:39 | 显示全部楼层
陳聖文 发表于 2017-1-9 17:41
所以說它會在編義的時候只保留編譯器的那個做夜系統的版本嗎?

是这样子的。

出20入0汤圆

发表于 2017-1-9 20:18:01 | 显示全部楼层
  楼主这些基本问题,自己搜索下就可以解决的。参考下 提问的艺术

出0入0汤圆

发表于 2017-1-9 21:08:43 | 显示全部楼层
条件编译,不满足条件的不会编译的,之前都是用来写一些全功能机型,通过修改某条件来减功能,一个系列的机型,共用一套程序就可以了

出0入4汤圆

发表于 2017-1-10 00:19:03 | 显示全部楼层
选择其中一个满足条件的分支编译到输出文件,其它的都弃之不用

出0入0汤圆

发表于 2017-1-10 06:57:35 来自手机 | 显示全部楼层
条件编译,你这段代码是针对不同平台选择代码进行编译的,找本c语言程序设计基础的书,上面都有介绍

出200入657汤圆

发表于 2017-1-10 09:55:40 | 显示全部楼层
就是说 __linux__ 或者__FreeBSD__  这两个中有1个、2个或0个被defined,
若是__linux__ 或 __FreeBSD__中任一个被定义
那么这下面的语句被编译
若不是
那么 (windows) 下面的语句被编译

这个的确是基础,一般不答这么基础的问题的

出0入0汤圆

发表于 2017-1-10 13:32:53 | 显示全部楼层
条件编译  用处大得很。

出40入42汤圆

发表于 2017-1-10 15:25:53 | 显示全部楼层
楼上的都好敬业回答问题,而我只留意到楼主用繁体字和港台术语。。

出0入0汤圆

发表于 2017-1-10 15:54:37 | 显示全部楼层
找谭某回回炉

出0入0汤圆

发表于 2017-1-10 17:54:40 | 显示全部楼层
楼主应该是台湾同胞,记忆体 作业系统,台湾语法。
这么写源代码是 变大了,.c(.cpp)文本变大,但编译出来的可执行文件 是不会变大的,不满足#if 条件的是不参与编译的。

出0入0汤圆

发表于 2017-1-22 19:49:17 | 显示全部楼层
哈罗台湾的胖友,中华民国有没有什么有意思的电子论坛
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 00:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表