/ 預處理命令
/ 宏定義
/ 通常形式:#define 宏名 字符串
# 表示這是一條預處理命令
宏名是一個標識符,必須符合C語言標識符的規定
字符串能夠是常數、表達式、格式化字符串等
/ 注意:
(1)若是在串中含有宏名,則不進行替換
(2)若是串長於一行,可在行末尾用"\"續行
(3)#define 出如今程序中函數的外面,宏名的有效範圍爲整個源文件
(4)能夠用#undef 終止宏定義的做用域
(5)宏定義時參數要加括號,如不加括號,有時會引發錯誤
(6)宏擴展必須使用括號來保護表達式中低優先級的操做符
/ #include 指令
/ 在一個源文件中使用#include 指令能夠將另外一個源文件的所有內容包含進來,且被讀入的源文件必須使用雙引號或者尖括號括起來
/ 雙引號與尖括號的區別
尖括號:系統到存放C函數庫頭文件所在的目錄中尋找要包含的文件
雙引號:系統先在用戶當前目錄中尋找要包含的文件,若找不到,再到存放C函數庫頭文件所在的目錄中尋找要包含的文件[在雙引號中給出文件路徑]
/ 頭文件
/ 通常狀況下,可將以下內容放入 .h 頭文件中
(1)宏定義
(2)結構、聯合和枚舉聲明
(3)typedef 聲明
(4)外部函數聲明
(5)全局變量聲明
/ 條件編譯
/ 通常狀況下,源程序中全部的行都參加編譯,但有時只但願對一部份內容在知足必定條件時才進行編譯,就須要使用一些條件編譯命令
/ #if 條件編譯指令
(1)
#if 參數表達式
程序段
#endif
(2)
#if 參數表達式1
程序段1
#else
#if 參數表達式n
程序段n
#endif(n個)
(3)
#if 參數表達式1
程序段1
#elif 參數表達式n
程序段n
#endif
若是參數表達式爲真,則編譯#if 和 #endif 之間的程序段,不然跳過不編譯
/ #ifdef 條件編譯指令
#ifdef 宏替換名——若是宏替換名已被定義,則對語句段進行編譯
#ifndef 宏替換名——若是宏替換名未定義,則對語句段進行編譯函數
/ #line 條件編譯指令
#line 用於改變 _LINE_ 與 _FILE_ 的內容,_LINE_ 用於存放當前編譯行的行號,_FILE_ 用於存放當前編譯的文件名
#line 行號["文件名"]
/ #pragma 條件編譯指令
#pragma 的做用是設定編譯器的狀態,或者指示編譯器完成一些特定的操做
#pragma 參數
參數包括:
(1) Message: 在編譯信息輸出窗口中輸出相應的信息
(2) code_seg: 設置程序中函數代碼存放的代碼段
(3) once: 保證頭文件被編譯一次
/ 預約義宏名
_LINE_ 當前被編譯代碼的行號
_FILE_ 當前源程序的文件名稱
_DATA_ 當前源程序的建立日期
_TIME_ 當前源程序的建立時間
_STDC_ 判斷當前編譯器是否爲標準C,若其值爲1表示符合,不然不符合code