历史上的今天
今天是:2024年08月22日(星期四)
2018年08月22日 | 89 C语言预处理指令总结
2018-08-22 来源:eefocus
预处理指令是以#号开头的代码行,#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。
下面是本章涉及到的部分预处理指令:
| 指令 | 说明 |
|---|---|
| # | 空指令,无任何效果 |
| #include | 包含一个源代码文件 |
| #define | 定义宏 |
| #undef | 取消已定义的宏 |
| #if | 如果给定条件为真,则编译下面代码 |
| #ifdef | 如果宏已经定义,则编译下面代码 |
| #ifndef | 如果宏没有定义,则编译下面代码 |
| #elif | 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 |
| #endif | 结束一个#if……#else条件编译块 |
预处理功能是C语言特有的功能,它是在对源程序正式编译前由预处理程序完成的,程序员在程序中用预处理命令来调用这些功能。
宏定义可以带有参数,宏调用时是以实参代换形参,而不是“值传送”。
为了避免宏代换时发生错误,宏定义中的字符串应加括号,字符串中出现的形式参数两边也应加括号。
文件包含是预处理的一个重要功能,它可用来把多个源文件连接成一个源文件进行编译,结果将生成一个目标文件。
条件编译允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率。
使用预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。
史海拾趣
|
我现在使用中国电信的UI界面加我们的USB数据卡,进行短信群发(7个用户),群发的用户包含数据卡本身的号码,在群发的时候,我再用7个用户中的一个或几个号码向USB数据卡发送短信(这样做就会导致USB数据卡同时收发短信的问题),那么结果会导致7个用户 ...… 查看全部问答> |
|
为SRAM创建一个Avalon tri-strate接口时遇到的问题 用DE2的开发板,用Create New Component为SRAM创建一个Avalon tri-strate接口,data width为16位,address width为18位,其他还有byteenable_n ,chipselect_n ,read_n ,write_n ,创建好添加到nios系统。另外nios系统还包括cp ...… 查看全部问答> |
|
作者:chenzhufly QQ:36886052 ( 转载请注明出处)BeagleBone的IO控制可以见我发的这个帖子:Linux下AM335X的GPIO控制https://bbs.eeworld.com.cn/thread-327156-1-2.html 测试代码:#include <stdlib.h>#include <sys/types.h>#include ...… 查看全部问答> |
|
通过串行总线和主机通讯。。找过资料,在开始测量前,需要设置配置、控制、状态、中断等寄存器。。。配置完成后,发送启动转换指令开始转换。。。然后通过主机发送读寄存器指令,返回相应的值。。。这种思路对吗?? 还有,它返回都是瞬时电压、电 ...… 查看全部问答> |




