程序预处理阶段,在做什么

您所在的位置:网站首页 子程序的作用是什么 程序预处理阶段,在做什么

程序预处理阶段,在做什么

2024-07-16 04:28| 来源: 网络整理| 查看: 265

目录

1.条件编译

2.源文件包含

3.宏替换

4.行控制

5.抛错

6.杂注

 

C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。

预处理指令包括条件编译、源文件包含、宏替换、行控制、抛错、杂注和空指令。

1.条件编译

条件编译的功能是根据条件有选择性的保留或者放弃源文件中的内容。常见的条件包含#if、#ifdef、#ifndef指令开始,以#endif结束。用#undef 指令可对用#define定义的标识符取消定义。

#if defined(CREDIT) credit(); #elif defined(DEBIT) debit(); #else printerror(); #endif 2.源文件包含

源文件包含指令的功能是搜索指定的文件,并将它的内容包含进来,放在当前所在的位置。源文件包含有两种,包含系统文件以及用户自定义文件。

#include : 让C编译器去系统目录下查找相关文件

#include  "xxxx.h":让C编译器去用户目录下查找相关文件

3.宏替换

宏的作用是把一个标识符指定为其他一些成为替换列表的预处理记号,当这个标识符出现在后面的文本中时,将用对应的预处理记号把它替换掉,宏的本质是替换。

宏的定义分为两种方式:有参和无参。

1)无参数的宏(对象式宏定义)

#define VERSION "0.0.1"

2)有参数的宏(函数式宏定义)

#define MAX(a,b) ((a)>(b)?(a):(b))

了解更多的使用方法可以:C语言中宏定义的盲区

4.行控制

行控制指令以"#"和“line”引导,后面是行号和可选的字面串。它用于改变预定义宏"__LINE__"的值,如果后面的字面串存在,则改变“__FILE__”的值。

如下列显示,#line修改了行号,下一行就是显示该行号。

5.抛错

抛错指令是以“#”和“error”引导,抛错指令用于在预处理期间发出一个诊断信息,在停止转换。抛错是人为的动作。

如下列,编译器会判断提示。

6.杂注

杂注指令用于向C实现传递额外的信息(编译选项),对程序的某些方面进行控制。

杂注指令以“#”开始,跟着“pragma”,后面是其他预处理记号,即所谓的选项。下面这个杂注用于指示C实现将结构成员对齐到字节边界。

# pragma pack(1)

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3