7 預處理器

2022-05-05 05:24:10 字數 905 閱讀 7054

#define f (x) ((x)-1)

#define f(x) ((x)-1)

這兩個巨集是不同的

由於巨集知識預處理器進行簡單的字串替換,替換後會增加**的體積,和該語言中所定義的函式不同。

在c語言中使用巨集進行寫**時為

#includeusing namespace std;

#define max(x, y) ((x) > (y) ? (x) : (y))

int main()

經預處理後,**為

#以上部分進行省略

# 2 "1.cpp" 2

# 3 "1.cpp"

using namespace std;

int main()

在進行編寫**時,應該時刻想著替換後的**為什麼樣子,巨集替換過程中並不等同於語句

使用巨集定義進行編寫**為

#includeusing namespace std;

#define condition(x) \

if(x) cout<<"yes"《預處理過後

# 2 "1.cpp" 2

# 3 "1.cpp"

using namespace std;

int main()

經轉換後為

# 2 "1.cpp" 2

# 3 "1.cpp"

using namespace std;

int main()

可以看出

轉換後,k為指向long long的指標,而l為long long型別的變數

對於該功能我們應該使用

typedef long long * ll_ptr;

來為型別取別名。

預處理器小結

預處理器發生在程式被編譯之前,所有的預處理器指令都以 開頭。1.include預處理器指令 使指定檔案的乙個副本被包含到指令所在的位置。include 與 include filename 區別 簡單不加以說明 include 指令用於包含標準類庫標頭檔案,也可以用於由多個原始檔組成的程式。2.in...

預處理器簡介

預處理是c編譯器做的第一件事情,主要是做一些文字方面的工作。包括 刪除注釋 插入被 include包含的檔案 定義和替換由 define指令定義的符號以及 的部份內容,和條件編譯。預定義符號 預定義符號如下表所示 file 進行編譯的檔名 line 檔案的當前行號 date 檔案編譯的日期 time...

C 預處理器

偶爾翻c 的教材,看到了一些以前自己不太關注的角落。參考教材 c 大學教程 harvey m.deitel 和paul james deitel著。預處理發生在編譯之前,包括把其他檔案包含到要編譯的檔案中 定義符號常量和巨集 程式 的條件編譯以及預處理指令的條件執行。對應的,預處理指令有 檔案包含命...