preprocess

预处理

l  #error tokens :将打印出与系统实现相关的信息,信息中包括#error预处理命令中给定的标记。标记是一些用空格分割的字符。

l  #pragma tokens:执行一个系统实现中已经定义好的操作,不能被系统实现识别出来的pragma将被忽略掉。

l  #:将会把替换文本中的一个标记转换成一个用引号括起来的字符串,比如#define HELLO(x) printf(“Hello, ” #x “\n”);,当程序中出现HELLO(leo)时,将被展开为:printf(“Hello leo\n”);

l  ##:用来将两个标记拼接在一起,例如#define TOKENCONCAT(x,y)  x##y,当程序中出现TOKENCONCAT(O,K)将会被OK替换。And##运算符必须有两个操作数;

l  #line:使得在它之后的后继程序代码行,按照命令中给定的整型常数值,重新编排序号。

l  __LINE__:源程序文件中当前代码行的行号

l  __FILE__:假定的文件名

l  __DATE__:源代码被编译的日期,格式为月日年

l  __TIME__:源代码被编译的时间,格式为时分秒

l  __STDC__

 

 

Mark:可以在源程序多处使用断言assert,在发行版本中只要定义宏#define NDEBUG就可以取消断言,而不用逐条删除。