博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言预处理指令笔记 by STP
阅读量:4046 次
发布时间:2019-05-25

本文共 1051 字,大约阅读时间需要 3 分钟。

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

3.文件包含 #include

格式1:
#include 
格式2:
#include "xxx.h"
 
作用:将一个文件的全部内容copy到另一个文件中
     使用#include容易引起重复包含文件,降低编译效率,可结合条件编译#ifndef使用,避免重复包含(一般OC中使用#import解决该问题,这      里稍作了解就可以了)
      

转载地址:http://lczci.baihongyu.com/

你可能感兴趣的文章
2020年终总结
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Clone Graph(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>