以「#」開頭的預處理命令一般都放在函式之外,而且一般放在原始檔前面,他們成為預處理部分。
預處理指的是進行編譯的第一遍掃瞄(語法掃瞄和語法分析)之前所作的工作。它由預處理程式負責完成。當對乙個原始檔進行編譯時,系統自動引用預處理程式對預處理部分進行處理,處理完畢後自動進入對源程式的編譯。
c語言的預處理功能主要有:
用乙個識別符號來表示字串,稱為「巨集」,識別符號稱為巨集名。在編譯預處理階段,所有巨集名會被巨集定義中的字串替代,稱為「巨集展開」或「巨集代換」。巨集分為無參巨集和有參巨集。
巨集名後不帶引數
格式:#define 識別符號 字串
字串可以是常數、表示式、格式串,為了巨集代換不出現錯誤,字串最好加括號
巨集定義作用域為巨集定義命令到源程式結束,可以用#undef提前終止作用域
帶參巨集定義
格式:#define 巨集名(形參表) 字串
作用是把指定檔案插入命令列位置取代命令列,從而把指定檔案和當前源程式檔案連成乙個原始檔。
格式:#include "檔名"
#include 《檔名》
使用<>表示在包含檔案目錄中去查詢(包含目錄是使用者在設定環境時設定的),而不在源檔案目錄查詢。
使用「」表示首先在當前的源檔案目錄中查詢,若未找到才到包含目錄中去查詢。
條件編譯功能可以按不同的條件去編譯不同的程式部分,因而產生不同的目標**檔案。對於程式的移植和除錯很有用。
三種形式
1、
#ifdef 識別符號
程式段1
#else //若程式段2為空,則可以省略
程式段2
#endif
2、
#ifndef 識別符號 //if no define
程式段1
#else //若程式段2為空,則可以省略
程式段2
#endif
3、
#ifdef 常量表示式 //根據常量表示式的值判斷
程式段1
#else //若程式段2為空,則可以省略
程式段2
#endif
C語言 預處理命令
我們可以在c源程式中插入傳給編譯程式的各中指令,這些指令被稱為預處理器指令,它們擴充了程式設計的環境。現把常用的預處理命令總結如下 1.預處理程式 按照ansi標準的定義,預處理程式應該處理以下指令 if ifdef ifndef else elif endif define undef line ...
C語言 預處理命令
一 巨集定義 在 語言源程式中允許用乙個識別符號來表示乙個字串,稱為 巨集 被定義為 巨集 的識別符號稱為 巨集名 在編譯預處理時,對程式中所有出現的 巨集名 都用巨集定義中的字串去代換,這稱為 巨集代換 或 巨集展開 巨集定義是由源程式中的巨集定義命令完成的。巨集代換是由預處理程式自動完成的。在 ...
C語言預處理命令
以 開頭的預處理命令。如 include,巨集定義命令 define pi 3.1415926等。在源程式中這些命令都放在函式之外,而且一般放在原始檔前面,它們稱為預處理部分。無參巨集定義 無參巨集的巨集名後不帶引數。其定義的一般形式為 define 識別符號 字串 其中的 表示這是一條預處理命令,...