今天一個(gè)新同學(xué)來(lái)問(wèn)一個(gè)典型的預(yù)處理的問(wèn)題,我當(dāng)年也碰到這樣的問(wèn)題,貼出來(lái),讓更多的人能直接搜到
預(yù)處理命令
# 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首個(gè)參數(shù)返回為一個(gè)帶引號(hào)的字符串. 例如, 命令
#define to_string( s ) # s
將會(huì)使編譯器把以下命令
cout << to_string( Hello World! ) << endl;
理解為
cout << "Hello World!" << endl;
使用##連結(jié)##前后的內(nèi)容. 例如, 命令
#define concatenate( x, y ) x ## y
...
int xy = 10;
...
將會(huì)使編譯器把
cout << concatenate( x, y ) << endl;
解釋為
cout << xy << endl;
理所當(dāng)然,將會(huì)在標(biāo)準(zhǔn)輸出處顯示'10'.
語(yǔ)法:
#line line_number "filename"
|
#line命令是用于更改__LINE__ 和 __FILE__變量的值. 文件名是可選的. __LINE__ 和 __FILE__ 變量描述被讀取的當(dāng)前文件和行. 命令
#line 10 "main.cpp"
更改行號(hào)為10,當(dāng)前文件改為"main.cpp".
語(yǔ)法:
__LINE__
__FILE__
__DATE__
__TIME__
_cplusplus
__STDC__
|
下列參數(shù)在不同的編譯器可能會(huì)有所不同, 但是一般是可用的:
- __LINE__ 和 __FILE__ 變量表示正在處理的當(dāng)前行和當(dāng)前文件.
- __DATE__ 變量表示當(dāng)前日期,格式為month/day/year(月/日/年).
- __TIME__ 變量描述當(dāng)前的時(shí)間,格式為hour:minute:second(時(shí):分:秒).
- _cplusplus 變量只在編譯一個(gè)C++程序時(shí)定義.
- __STDC__ 變量在編譯一個(gè)C程序時(shí)定義,編譯C++時(shí)也有可能定義.