C语言预处理指令笔记 by STP

预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。

C语言提供了多种预处理功能,如宏定义文件包含 条件编译等。合理使用预处理功能可令程序便于阅读、修改、 移植和调试,也有利于模块化程序设计。

为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号(;)

预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件。

1.宏定义 #define

不带参数格式:
#define ABC 23

作用:编译时将源程序中的ABC替换成23,常用来定义常量。

带参数格式:
#define AVG(a,b) (((a)+(b))/2)

作用:AVG(3,5),(((3)+(5))/2),输出结果为:4;
      类似于函数,但不涉及储存空间分配,参数类型匹配,参数传递,返回值等问题,在编译预处理阶段执行,比函数效率更高。

使用习惯注意:宏一般用大写字母,以便与变量名区分开来;
            使用带参数的宏注意将参数计算结果用括号包起来,确保计算结果正确

2.条件编译 #if、#elif、#else、#endif


格式:
#if 条件1
code1
#elif 条件2
code2
#else 条件3
code3
#endif
使用习惯注意#if  #elif 后面的条件一般为而不是判断变量,因为条件编译是在编译之前做的判断,宏定义也是编译之前定义的,而变量是             在运行时才产生的、才有使用的意义;
            条件编译结束后一定要加#endif;
            #if defined(),#if !defined()判断是否定义过某个宏;
            #ifdef 等同于#if defined(), #ifndef等同于#if !defined() ;
            条件编译与宏结合使用可用于iOS版本适配
 

3.文件包含 #include


格式1:
#include <xxx.h>
<div style="color: rgb(51, 51, 51); font-family: 'courier new', courier; font-size: 14px; line-height: 25.2000007629395px; margin: 0px; padding: 0px; background-color: rgb(254, 254, 242);">格式2:</div><div style="color: rgb(51, 51, 51); font-family: 'courier new', courier; font-size: 14px; line-height: 25.2000007629395px; margin: 0px; padding: 0px; background-color: rgb(254, 254, 242);"><pre name="code" class="objc">#include "xxx.h"
 
  
作用:将一个文件的全部内容copy到另一个文件中
     使用#include容易引起重复包含文件,降低编译效率,可结合条件编译#ifndef使用,避免重复包含(一般OC中使用#import解决该问题,这      里稍作了解就可以了)
      




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值