C/C++ 预处理

以下几点只是我自己的笔记加上一点体会, 内容比较简单。具体的使用技巧以后再举例说明。


1CC++程序中允许定义一些命令, 这些命令可以在编译之前进行处理,这些命令成为预处理命令


2、预处理命令#开头,包括#include#define#undef #if#else #endif#ifdef#ifndef


3、按功能的不同又被分为:宏定义、文件包含处理、条件编译三种


4、预处理的目的:提高编程效率,处理跨平台问题等


5、预处理操作实际上就是替换,所以加括号就是一个很好的习惯了,如果没括号,优先级的问题将是一个大问题。


6、注意:末尾不加分号,它不是C语句,也不是C语法,只是预处理程序支持。


7、预处理程序支持带参数的宏替换操作(挺强大的,我们自己也可以设计一个宏替换的简单算法)

eg #define S(a,b)  (a*b)   括号里面的就是参数了。

关于带参数的宏的理解:首先,宏的标志就是S,跟参数无关,它应该具有唯一性,另外,参数是从左到右进行替换。比如上例中S(2,3) 就是根据标号S,找到宏定义,由()确定参数,然后从左到右,2替换a3替换b,用字符串处理函数就可以实现了。


8、宏定义的各部分使用空格进行分割的,所以,不要随便添加空格了 ^^,另外一个宏只能写在一行上,当然行尾加\是可行的。


9、文件包含:把被包含的文件全部拷贝到当前文件中。然后就可以使用被包含的文件中的内容了。此时就不需要用extern声明了。 注意相互包含的问题,即 A包含了B之后,就不要在B里面包含A了,如果真的需要的化,就用条件预编译,或者C++中的#Program Once


10#include "" <> 的区别, <> 通常用于标准库文件,而 "" 用于用户自定义文件。


11、条件编译:#if(#ifdef\#ifndef) #else #endif  //#if 后面跟逻辑值, #ifdef#ifndef 之后通常会定义一个作为条件的宏。




发布了41 篇原创文章 · 获赞 3 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章