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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3075|回復: 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過的東西.就這個意思,應該理解了吧.


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品欧美一区二区 | 特大黑人巨交吊性xxxx视频 | 美女综合网 | 成人在线观看免费爱爱 | 国产精品免费一区二区三区 | 日韩av在线一区 | 欧美日韩激情视频 | 中文字字幕码一二三区 | 日韩毛片在线观看 | 久久都是精品 | 91网站免费| 国产性猛交 | 欧美大片91| 免费av播放 | 日韩免费高清视频 | 国产欧美一区二区三区在线看蜜臀 | 香蕉视频在线免费看 | 亚洲小视频在线观看 | 成人在线a | 日韩欧美中文在线 | 日韩精品视频在线播放 | 在线观看的av网站 | 日韩综合一区 | 欧美精产国品一二三区 | 91免费国产 | 成人在线小视频 | 成人国产一区 | 日本aaaa| 日韩黄色免费视频 | 特黄aaaaaaaaa真人毛片 | 免费的黄色小视频 | 久久免费观看视频 | www.国产精品.com | 久久riav| 国产精品美女视频 | 日韩视频一区二区 | 国产福利一区二区三区 | 国产精品羞羞答答 | 亚洲狠狠干 | 婷婷综合色 | 国产精品成人国产乱一区 |