程式的編譯分為4個階段
簡單的一些預處理命令:
預處理命令
含義#define
巨集替換#undef
撤銷定義過的巨集名
#include
讓編譯程式將另一原始檔嵌入到含有#include的程式中
#if #endif
如果#if後的常量表示式為true,則編譯#if與#endif之間的**,否則跳過這些**。#endif標誌著乙個#if塊的結束
#else
#else建立另乙個選擇,在#if失敗後編譯
#elif
可以形成乙個if else if 的階梯狀語句,進行多種編譯選擇
#line
改變當前行數和檔名,它們是在編譯程式中預先定義的識別符號
#error
編譯程式中,只要遇到#error,就會生成乙個編譯錯誤提示資訊,並停止編譯
#pragma
為實現時定義的命令,它允許想編譯程式傳遞各種命令
一些預處理巨集:
_line_ 表示正在編譯的檔案的行號
_file_ 表示正在編譯的檔案的名字
_date_ 表示編譯時刻的日期字串
_time_ 表示編譯時刻的時間字串
_stdc_ 判斷該程式是不是定義為標準c程式
#define add(a, b) ((a)+(b))
巨集引數和#define定義中可以出現其他#define定義的變數,但是對於巨集,不能出現遞迴
巨集優點
巨集缺點
#if 常量表示式
程式段 1
#else
程式段 2
#endif
#if 常量表示式
程式段 1
#elif 常量表示式
程式段 2
#else
程式段 3
#endif
條件編譯用到的巨集
編碼的時候經常要用到條件編譯,每次都到網上去查比較浪費時間,今天總結一下以備後用 visual c ifdef msc ver 非vc編譯器很多地方也有定義 borland c ifdef borlandc unix windows windows 95 98 me的ver win32 window...
預處理 巨集定義 條件編譯
可以用 define命令將乙個指定的識別符號 即巨集名 來代表乙個字串 巨集定義語法 define 巨集名 字串 使用原則 1 原樣替換 2 不能代替函式 3 定義時字尾不要加分號。帶引數的巨集定義 include define s a,b a b 注意,此處不能加分號,否則就變成了s a b in...
Golang 編譯 條件編譯
條件編譯 標籤編譯 build tag build build linux and 386 or darwin and not cgo 以 開始,例如 build 支援 goos 與 goarch 並可以具有多個值,用 分割,例如 build linux,darwin,freebsd 支援 不等條件...