久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3057|回復: 0
打印 上一主題 下一主題
收起左側

關于define的用法

[復制鏈接]
跳轉到指定樓層
樓主
ID:73735 發表于 2015-2-19 00:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#ifdef OS_GLOBALS....................................1
#define OS_EXT........................................2
#else..................................................3
#define OS_EXT extern................................4
#endif.................................................5
意思就是說,如果 OS_GLOBALS被定義,則本文件中的 OS_EXT被
替換為空(被忽略), 如果 OS_GLOBALS未被定義,則本文件中的
OS_EXT 被替換為 extern關鍵字. 意義比較明確, 就是給出了
本文件中哪些變量和函數,在何時需要使用 extern引用 (取決
于其他文件中有無定義 OS_GLOBALS.
為方便你理解, 舉個例子.
現在有兩文件 AAA.c和 BBB.c
AAA.c內容是
#define OS_GLOBALS
BBB.c內容是
#ifdef OS_GLOBALS
#define OS_EXT
#else
#define OS_EXT extern
#endif
OS_EXT void function1(void);
如果AAA.c先于BBB.c編譯時,OS_GLOBALS被定義,在BBB.c里,實際上是
void function1(void); // 聲明了自己的函數
如果BBB.c先于AAA.c編譯,則OS_GLOBALS被定義,在BBB.c里,實際上是
extern void function1(void); // 聲明了外部的一個函數.


另外,你想了解的比較重要的是,為什么define后面可以只有一個名字,這個語句的意思就是,將XXXX替換為空(從文本上忽略).比如
#define OS_EXT
意思就是說,在本文件中,凡OS_EXT文本串,在編譯時都被替換成空白,被忽略,或者說刪除.然而,這不影響它作為#ifdef判斷的有效性,OS_EXT仍然是一個被define過的東西.就這個意思,應該理解了吧.


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人人擦人人 | 香蕉久久a毛片 | 欧美9999 | 一区二区三区免费 | 欧美日韩黄色一级片 | 成人精品在线视频 | 日韩成人专区 | 成人一区二区三区视频 | 精彩视频一区二区三区 | 午夜精品一区二区三区三上悠亚 | 久久久久国产精品一区二区 | 欧美在线国产精品 | 北条麻妃一区二区三区在线视频 | 97精品国产一区二区三区 | 天天看逼 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 精品久久不卡 | 97久久精品 | 久久香蕉网 | 夜夜草 | 国产乱码精品一区二区三区五月婷 | 成人免费观看男女羞羞视频 | 亚洲午夜精品在线观看 | 古装人性做爰av网站 | 日本免费一区二区三区 | 国产一区二区三区在线观看免费 | av网站在线播放 | 三级黄色片在线 | 日本精品视频在线 | 国产一区二区三区久久久久久久久 | 亚洲视频免费在线播放 | 欧美日日日日bbbbb视频 | 国产成人一区二区 | av在线视| 中文久久| 天天干天天操天天射 | 99爱在线免费观看 | 久久99视频这里只有精品 | 日韩中文字幕视频 | 国产www成人 | 国产美女在线播放 |