preprocessor最好是被当作在编译之前运行的一个独立程序,它的目的是执行一些指令(directives)。 directives是一些特殊的说明(instructions),以#开头,新的一行结尾(而非;) preprocessor: 1. include —— #include 2. macro defines,宏的定义 #define 指令可以用来创建宏。宏是一种规则,定义input如何被output顺序取代的因此,宏分为object-like 和 function-like两种 function-like的就像函数一样工作,目的也很相似,现在用得较少,因为基本上都能被inline function取代。 object-like的形式有两种: #define identifier substitution_text 例子: #define MY_FAVORITE_NUMBER 9结果是:遇到MY_FAVORITE_NUMBER时,自动把它当9使用 #define identifier
例子: #define USE_YEN结果是:当程序运行到遇到USE_YEN时,USE_YEN的部分移除,并replaced by nothing! 用途:conditional compilation有条件的编译
header guards:保证header只被include一次 #pragma once 在include的header的地方使用它,跟header guard的效果时一样的,只不过它不是official part of the C++ language,也并非所有的编译器都支持它,所以还是用header guard为好 |
|