C語言 預處理器

2021-07-29 22:31:12 字數 1791 閱讀 9890

指令

描述#define

定義巨集(macro)

#include

包含乙個源**檔案

#undef

取消已定義的巨集

#ifdef

如果巨集已經定義,則返回真

#ifndef

如果巨集沒有定義,則返回真

#if如果給定條件為真,則編譯下面**

#else

#if 的替代方案

#endif

結束乙個if..else條件編譯塊

#error

當遇到標準錯誤時,輸出錯誤訊息

#pragma

使用標準化方法,向編譯器發布特殊的命令到編譯器中

#define min_array_count 20;
這個指令告訴cpp把所有min_array_count替換為20;

#define  ******_sum_method(x)  \

((x) * (x))

如果巨集太長,乙個單行容納不下,則使用巨集延續運算子(\);

#include 

#include "mybook.h"

這個指令告訴cpp從系統庫中獲取stdio.h,並新增到當前原始檔中;

在本地目錄查詢mybook.h檔案,並新增到當前原始檔中;

#undef  min_array_count;

#define min_array_count 40;

#undef指令先取消已定義的巨集min_array_count,#define min_array_count 40 再次定義巨集min_array_count為40;

#ifndef min_array_count

#define min_array_count 20

#endif

這個指令告訴 cpp 只有當 min_array_count 未定義時,才定義 min_array_count。

#ifdef debug

#define min_array_count 40

#endif

這個指令告訴 cpp 如果定義了 debug,則執行處理語句。在編譯時,如果您向 gcc 編譯器傳遞了 -ddebug 開關量,這個指令就非常有用。它定義了 debug,您可以在編譯期間隨時開啟或關閉除錯。巨集描述

__date__

當前日期, 以 「mmm dd yyyy」 格式表示的字元常量

__time__

當前時間,以 「hh:mm:ss」 格式表示的字元常量

__file__

當前檔名,乙個字串常量

__line__

當前行號,乙個十進位制常量

__stdc__

編譯器以 ansi 標準編譯時,則定義為 1

#include 

int main()

結果:(xcode執行結果)

file

:/users/wangyong/desktop/ccalculate/ccalculate/main.m

date

:apr

12017

time:22

:37:59

line

:159

ansi:1

program ended with exit code:

0

C語言 預處理器

如果想在下一行延續指令,則在當前行末尾使用 字元 帶引數的巨集 define max x,y x y x y define is even n n 2 0 則i max j k,m n if is even i i 將被替換為 i j k m n j k m n if i 2 0 i 巨集的替換列表...

C語言 預處理器

6 gcc編譯器檢視替換後的編碼 7 標頭檔案相互包含導致的重定義錯誤 指令 描述 define 定義巨集 include 包含乙個源 檔案 undef 取消已定義的巨集 ifdef 如果巨集已經定義,則返回真 ifndef 如果巨集沒有定義,則返回真 if如果給定條件為真,則編譯下面 else i...

C語言 預處理器

3 條件編譯 4 檔案包含include 5 其他指令 預處理階段會執行這些指令。file 進行編譯的源檔名 line 檔案當前的行號 date 檔案被編譯的日期 time 檔案被編譯的時間 define suqre x x x 如果乙個現存的名字需要重新定義,那麼舊的定義首先必須要用 undef ...