打印
[DSP编程]

C语言预处理理论2

[复制链接]
287|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-11-29 13:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言预处理理论

1、头文件包含

(1)#include <>和#include ""区别:

<>专门用来包含系统提供的头文件(就是系统自带的,不是程序员自己写的),""用来包含自己写的头文件;更深层次来说:

<>的话C语言编译器只会到系统指定目录(编译器中配置的或者操作系统配置的寻找目录,譬如在ubuntu中是/usr/include目录,

编译器还允许用-I来附加指定其他的包含路径)去寻找这个头文件(隐含意思就是不会找当前目录下),如果找不到就会提示这个

头文件不存在。

(2)""包含的头文件,编译器默认会先在当前目录下寻找相应的头文件,如果没找到然后再到系统指定目录去寻找,如果还找不

到则提示文件不存在。

总结+注意:规则虽然允许用""来包含系统指定目录,但是一般的使用原则是:如果是系统指定的自带的用<>,如果是自己写

的在当前目录下放着用"",如果是自己写的但是集中放在了一起专门存放头文件的目录下,将来在编译器中用-I参数来寻找,

这种情况下用<>。

(3)头文件包含的真实含义是:在#include<xx.h>的那一行,将xx.h这个头文件的内容原地展开替换这一行#include语句。

这个过程在预处理中进行。

2、注释

(1)注释是给人看的,不是给编译器看的。

(2)编译器既然不看注释,那么编译时最好没有注释的。实际上在预处理阶段,预处理器会拿掉程序中所有的注释语句,到了

编译器阶段程序中其实已经没有注释了。

3、条件编译

(1)有时候我们希望程序有多种配置,我们在源代码编写时写好了各种配置的代码,然后给个配置开关,在源代码级别去修改

配置开关来让程序编译出不同的效果。

(2)条件编译中用的两种条件判定方法分别是#ifdef和#if

区别:#ifdef XXX判定条件成立与否主要是看XXX这个符号在本语句之前有没有被定义,只要定义了(我们可以直接#define XXX

或者#define XXX 12或者#define XXX YYY)这个符号就是成立的。

#if (条件表达式),它的判定标准是()中的表达式是否为true还是false,跟C中的if语句有点像。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1827

帖子

18

粉丝