C語言拾遺 C語言預處理

2021-09-25 14:21:11 字數 1343 閱讀 5447

摘要: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。無論...