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