深刻懂得C預處置器。本站提示廣大學習愛好者:(深刻懂得C預處置器)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻懂得C預處置器正文
C 預處置器不是編譯器的構成部門,是編譯進程中一個零丁的步調。C預處置器只是一個文本調換對象,它會指導編譯器在現實編譯之前完成所需的預處置。
一切的預處置器敕令都是以井號(#)開首。它必需是第一個非空字符,為了加強可讀性,預處置器指令應從第一列開端。
下表包括一切主要的預處置器指令:
指令
描寫
#define
界說宏
#include
包括一個源代碼文件
#undef
撤消已界說的宏
#ifdef
假如宏曾經界說,則前往真
#ifndef
假如宏沒有界說,則前往真
#if
假如給定前提為真,則編譯上面代碼
#else
#if 的替換計劃
#elif
假如後面的 #if 給定前提不為真,以後前提為真,則編譯上面代碼
#endif
停止一個 #if……#else 前提編譯塊
#error
當碰到尺度毛病時,輸入毛病新聞
#pragma
應用尺度化辦法,向編譯器宣布特別的敕令到編譯器中
#line
供給用於編譯器信息的行號
預界說宏
ANSI C界說了很多宏。在編程中可使用這些宏,然則不克不及直接修正這些預界說的宏。
宏
描寫
__DATE__
以後日期,以 "MMM DD YYYY" 格局表現的字符常量。
__TIME__
以後時光,以 "HH:MM:SS" 格局表現的字符常量。
__FILE__
包括以後文件名,字符串常量。
__LINE__
包括以後行號,十進制常量。
__STDC__
當編譯器以ANSI尺度編譯時,則界說為 1。
__STDC__VERSION__
假如編譯器遵守C99,則該宏的值是199901L,其他情形下,該宏沒界說。
__STDC__HOSTED__
以後是宿主體系,該宏值為1,以後是自力體系,該宏值為0。
__STDC__IEC__559__
若浮點完成遵守IEC 60599尺度,該宏值為1,不然無界說。
__STDC__IEC__559__COMPLEX__
若單數運算完成遵守IEC 60559尺度,則該宏值為1,不然不決義。
__STDC__ISO10646__
界說為一個長整數常量。
預處置器運算符
C預處置器供給了以下運算符贊助創立宏:
1、宏延續運算符(\)
一個宏平日寫在一個單行上。然則假如宏太長,單行包容不下,則應用宏延續運算符(\)。
2、字符串常量化運算符(#)
在宏界說中,當須要把宏的參數轉換為字符串常量時,則應用字符串常量化運算符(#)。在宏中應用的該運算符有一個特定的參數或參數列表。
3、標志粘貼運算符(##)
宏界說內的標志粘貼運算符(##)匯合並兩個參數。它許可在宏界說中兩個自力的標志被歸並為一個標志。
4、defined()運算符
預處置器defined運算符是用在常量表達式中,用來肯定一個標識符能否曾經應用 #define界說過。假如指定的標識符已界說,則值為真(非零)。假如指定的標識符不決義,則值為假(零)。
參數化的宏
CPP一個壯大的功效是可使用參數化的宏來模仿函數。
在應用帶有參數的宏之前,必需應用#define指令界說。參數列表是括在圓括號內,且必需緊跟在宏稱號的後邊。宏稱號和左圓括號之間不許可有空格。
以上這篇深刻懂得C預處置器就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。