preprocessor最好是被當(dāng)作在編譯之前運(yùn)行的一個(gè)獨(dú)立程序,它的目的是執(zhí)行一些指令(directives)。 directives是一些特殊的說明(instructions),以#開頭,新的一行結(jié)尾(而非;) preprocessor: 1. include —— #include 2. macro defines,宏的定義 #define 指令可以用來創(chuàng)建宏。宏是一種規(guī)則,定義input如何被output順序取代的因此,宏分為object-like 和 function-like兩種 function-like的就像函數(shù)一樣工作,目的也很相似,現(xiàn)在用得較少,因?yàn)榛旧隙寄鼙籭nline function取代。 object-like的形式有兩種: #define identifier substitution_text 例子: #define MY_FAVORITE_NUMBER 9結(jié)果是:遇到MY_FAVORITE_NUMBER時(shí),自動(dòng)把它當(dāng)9使用 #define identifier
例子: #define USE_YEN結(jié)果是:當(dāng)程序運(yùn)行到遇到USE_YEN時(shí),USE_YEN的部分移除,并replaced by nothing! 用途:conditional compilation有條件的編譯
header guards:保證header只被include一次 #pragma once 在include的header的地方使用它,跟header guard的效果時(shí)一樣的,只不過它不是official part of the C++ language,也并非所有的編譯器都支持它,所以還是用header guard為好 |
|