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有条件的编译
| #define PRINT_JOE #ifdef PRINT_JOE cout << "Joe" << endl; #endif #ifdef PRINT_BOB cout << "Bob" << endl; #endif
|
| #ifndef PRINT_BOB cout << "Bob" << endl; #endif |
header guards:保证header只被include一次
#pragma once 在include的header的地方使用它,跟header guard的效果时一样的,只不过它不是official part of the C++ language,也并非所有的编译器都支持它,所以还是用header guard为好
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。