關於預編譯處理的嘗試

2022-03-29 03:37:33 字數 490 閱讀 6593

今天在看k60的庫檔案的時候對於一些**不理解就自己建立了乙個小的測試**,上**

#include#define cw

#if defined (iar)

const int a=

#elif defined (cw)

const int b=

#endif

3;void main(void)

這是乙個很簡單的測試**,如果是上面的**編譯會出錯,說a沒有定義,有人會說我a定義了啊。。。。這時候預處理的作用就上來了,在**中我define了cw那麼在**編譯的時候就只會執行const int b=3;這一行**顯然a沒有定義,那是對的。。。。,還有乙個讓我們疑惑的地方就是在b和3之間還有乙個endif會報錯了,一開始我的疑惑就在這裡,但是經過自己編**嘗試是不會的,反過來想想這也是對的,因為在預編譯處理的時候那些#endif之類的只是告訴編譯器一些資訊,所以是沒有作用的,這句真的**就只是 const int b=3;

預編譯處理

1.編譯過程的簡介 預編譯 a.處理所有的注釋,以空格代替。b.將所有 define刪除,並展開所有的巨集定義,字串替換。c.處理條件編譯指令 if,ifdef,elif,else,endif d.處理 include,並展開被包含的檔案,把頭檔案中的宣告,全部拷貝到檔案中。e.保留編譯器需要使用的...

stdafx h預編譯處理

stdafx.h中沒有函式庫,只是定義了一些環境引數,使得編譯出來的程式能在32位的作業系統環境下執行。windows和mfc的include檔案都非常大,即使有乙個快速的處理程式,編譯程式也要花費相當長的時間來完成工作。由於每個.cpp檔案都包含相同的include檔案,為每個.cpp檔案都重複處...

預編譯處理命令

if endif是c 種的條件編譯預處理命令 有兩種格式 1 ifdef 標示符 程式段1 else 程式段2 endif 表示 如果標示符已經被 define命令定義過,則編譯程式段1,否則編譯程式段2 2 if 表示式 程式段1 else 程式段2 endif 表示 如果表示式為真,則編譯程式段...