C51編譯器-預(yù)處理器
Cx51編譯器中的預(yù)處理器處理源程序文件中的指令。Cx51支持所有的ANSI C指令。
Directives指令
預(yù)處理器指令前面不能有空格,并且必須加前綴‘#’如:
#pragma
#include
#define DEBUG 1
下面列出預(yù)處理器指信令和簡(jiǎn)單描述
指令 描述
Define 定義一個(gè)預(yù)處理器宏或常量
elif 如果前面的if, ifdef, ifndef或elif分支都不成立的話,初始化if條件的一個(gè)分支
else 如果前面的if, ifdef或 ifndef分支都不成立的話,初始化if條件的一個(gè)分支
endif 結(jié)束一個(gè)if, ifdef, ifndef, elif, 或 else 塊
error 輸出用戶定義的一個(gè)錯(cuò)誤信息。這個(gè)指令使用編譯器發(fā)出一個(gè)特定的錯(cuò)誤信息
ifdef 為條件編譯求表達(dá)式的值。要被計(jì)算的參數(shù)就是一個(gè)definition 定義的名字
ifndef 與ifdef相同,只是如果這個(gè)名字沒(méi)有被定義時(shí)運(yùn)算結(jié)果為真
if 為條件編譯求表達(dá)式的值
include 從外部文件中讀取源程序文本。
line 指定一個(gè)行號(hào)和一個(gè)可選的文件名,這個(gè)指令用于在錯(cuò)誤信息中定位錯(cuò)誤的位置。Specifies a line number together with an optional filename. These specifications are used in error messages to identify the error position.
pragma 允許你使用可以在C51命令行上使用的控制指令。Allows you to specify control directives that may be included on the C51 command line. Pragmas may contain the same control directives that are specified on the command line.
undef 檢查一個(gè)宏或常量是否已經(jīng)定義
Stringize Operator(#)
字符化操作符#
如果操作符出現(xiàn)在宏的參數(shù)的前面,參數(shù)庫(kù)就會(huì)做為字符串傳遞到宏里。如
#define stringer(x) printf (#x "n")
stringer (text)
預(yù)處理器處理的結(jié)果為:
printf ("textn")
Token-pasting operator(##)
這個(gè)操作符在宏定義中連結(jié)兩個(gè)參數(shù)。它允許兩個(gè)分開(kāi)的標(biāo)號(hào)在宏定義中合并為一個(gè)標(biāo)號(hào)
如果在宏定中一個(gè)宏參數(shù)名字緊隨著或緊跟著這操作符,宏參數(shù)和這個(gè)操作符被參數(shù)傳遞的值取代。鄰接著操作符的文本不是宏參數(shù)名稱的宏是不受影響的。如:
#define paster(n) printf ("token" #n " = %d", token##n)
paster (9);
預(yù)處理器處理的結(jié)果為:
printf ("token9 = %d", token9);
Predefined Macro Constants預(yù)定義宏常量
常量 描述
_ _C51_ _ C51編譯器的版本Version number of the Cx51 compiler (for example, 610 for version 6.10).
_ _DATE_ _ 編譯開(kāi)始的日期Date when the compilation was started.
_ _FILE_ _ 被編譯文件的名字Name of the file being compiled.
_ _LINE_ _ 被編譯文件當(dāng)前的行號(hào)Current line number in the file being compiled.
_ _MODEL_ _ 選擇的存儲(chǔ)器模式Memory model selected (0 for small, 1 for compact, 2 for large).
_ _TIME_ _ 編譯開(kāi)始的時(shí)間Time when the compilation was started.__STDC_ _ 定義為1時(shí),表示完全遵守ANSI C標(biāo)準(zhǔn)