c語言標準允許在程式中用乙個識別符號來表示乙個字串,成為巨集。識別符號為巨集名 ,在編譯預處理時,將程式中所有的巨集名用相應的字串來替換,這個過程稱為巨集替換,巨集分為兩種:無引數的巨集和有引數的巨集。
1.無引數的巨集
無引數巨集定義的一般形式為:#define 識別符號字串
例如:
2.有引數的巨集定義
有引數的巨集定義類似於有引數的函式,其定義的一般形式為:
#define 識別符號(形參表)字串。
例如:
二、檔案包含
檔案包含是指是把指定原始檔的全部內容包括到當前源程式檔案中。
檔案包含命令的一般形式為:
#include "檔名"或 #include 《檔名》
三、條件編譯
條件編譯是指在特定的條件下,滿足條件和不滿足條件的情況分別進行處理——滿足條件編譯某些語句,不滿足條件時編譯另一些語句。
條件編譯命令有以下幾種模式。
模式一:
#ifndef 識別符號
程式段1:
#endif
其含義是:如果沒有定義識別符號,則編譯程式段1。
這裡的程式段1既可以是語句組,也可以執行命令。
例如:
#ifndef getkey;
#define getkey;
#include#endif;
**含義是:如果沒有定義符號常量getkey,就定義該產量並且包含標頭檔案sys/types.h。
模式二:
#ifndef 識別符號
程式段1
#else
程式段2
#endif
其含義是:如果沒有定義識別符號,就編譯程式段1,否則就編譯程式段2。
模式三:
#ifdef 識別符號
程式段1
#endif
其含義是:如果定義了識別符號,就編譯程式段1,否則就不編譯該程式段。
例如:
#ifdef debug
printf("a=%d,b=%d",a,b);
#endid
在呼叫程式時,可以在程式頭部加入如下語句:
#define debug
模式四:
#ifdef 識別符號
程式段#else
程式段2
#endif
其含義是:如果定義了識別符號,就編譯程式段1,否則就編譯程式段2.
模式五:
#if 表示式
程式段1
#endif
其含義是:如果表示式成立,則編譯程式段1,否則不編譯程式段。
模式六:
#if 表示式
程式段1
#else
程式段2
#endif
其含義是:如果表示式成立,就編譯程式段1,否則就編譯程式段2。
Linux C預處理命令
無引數巨集定義一般形式為 define 標識字串 例 使用無引數巨集計算圓的面積 include stdafx.h define p 3.1415 2 2 int tmain int argc,tchar argv 有引數的巨集類似於有引數的函式,其定義的一般形式為 define 識別符號 形象表 ...
Linux C 預處理命令
1 巨集定義 定義 c語言標準中允許程式用乙個識別符號來表示乙個字串,稱為巨集。在編譯預處理時,將程式中所有的巨集名用相應的字串來替換,這個過程稱為巨集替換。注 a 巨集定義是由源程式中的巨集定義命令完成的。巨集代替是由預處理程式自動完成的。b 巨集定義和其他編譯處理命令不是以分號結尾的。c 巨集定...
Linux C語言預處理命令
c語言的源 中可以包括各種編譯指令,這些指令就稱之為預處理命令。雖然它們實際上不是c語言的一部分,但卻擴充套件了c程式設計的環境,預處理程式和注釋簡化程式開發過程,並且提高程式的可讀性。然而這些命令是在編譯前由預處理程式對原始檔的預處理檔案進行加工。預處理是在c語言編譯的4個階段 預處理 編譯 彙編...