編譯鏈結 巨集替換 條件編譯

2021-09-29 11:21:39 字數 1051 閱讀 8324

程式的編譯分為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 支援 不等條件...