摘要:c程式的源**中可包括各種編譯指令,這些指令稱為預處理指令。雖然它們實際上不是c語言的一部分,但卻擴充套件了c程式設計的環境。ansi標準定義的c語言預處理程式包括下列命令:#define,#error,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#undef,#line,#pragma等。所有預處理命令均以符號#開頭,下面分別加以介紹。
預處理(或稱預編譯)是指在進行編譯的第一遍掃瞄(詞法掃瞄和語法分析)之前所作的工作。預處理指令是在程式正式編譯前就由編譯器進行的操作,可放在程式中任何位置。預處理是c語言的乙個重要功能,它由預處理程式負責完成。當對乙個原始檔進行編譯時,系統將自動引用預處理程式對源程式中的預處理部分作處理,處理完畢自動進入對源程式的編譯。c語言提供多種預處理功能。合理使用預處理功能編寫的程式便於閱讀、修改、移植和除錯,也有利於模組化程式設計。
下表總結了由預處理器定義的符號。它們的值或是字串常量,或是十進位制數字常量。__file__和__line__在確認除錯輸出的**方面很有用處。__date__和__time__常常用於在被編譯的程式中加入版本資訊。__stdc__用於在那些ansi環境和非ansi環境都必須進行編譯的程式中結合條件編譯。
符號示例
含義__file__
"name.c"
進行編譯的檔名
__line__
25檔案的當前行號
__date__
"jan 31 1997"
檔案被編譯的日期
__time__
"18:04:30"
檔案被編譯的時間
__stdc__
1如果編譯器遵循ansi c,其值為1,否則未定義
ansi c 定義的預處理指令主要包括:檔案包含、巨集定義、條件編譯和特殊控制等 4 類。
種類符號
含義檔案包含
#include
檔案包含
巨集定義#define
巨集定義#undef
巨集刪除條件編譯
#ifif
#elif
else if
#else
else
#endif
end if
#ifdef
if define
#ifndef
if not define
特殊控制
#error
輸出指定的錯誤資訊
#pragma
執行特定操作
#line
標記**原始位置
c和指標-第14章
C語言拾遺
main函式引數 c語言規定main函式引數只能有兩個,習慣上這兩個引數寫成argc和argv。c語言還規定argc必須是整形變數,argv必須是指向字串的指標陣列。因此,main函式的函式頭應該寫為 main argc,argv int argc char argv 或者 main int arg...
C語言拾遺
保證某些全域性變數的常量性 c c 中不能通過變數來定義陣列 const int row 10 const int col 10 c define row 10 define col 10orenum c style型別轉換 new type expression static cast expre...
C語言拾遺
1.操作符與基本型別 賦值運算子的優先順序低於算數運算子。如 x 3 2即x 3 2 優先順序 高於 高於 高於 一元操作符的關聯是從右到左,和 都必須邦定乙個變數或者叫 左值 如 x 注意 x 並不是左值。例如 z x y,相當於 z x y 字元 0 對應ascii的48,a 對應的是65。無論...