釜屋 Kamaya · 产品与技术资料捷比信主站 · 综合产品与服务
釜屋 Kamaya电阻、保险丝与保护元件
捷比信产品咨询0755-29796190

干货! C语言预处理命令分类及工作原理

在C语言编程过程中,经常使用诸如#include,#define之类的指令。这些符号开头的指令称为预处理指令,这些预处理指令由预处理器(预处理器)操作。
与其他编程语言相比,C / C ++语言更依赖于预处理程序,因此在读取或开发C / C ++程序的过程中,您可能会遇到大量预处理指令。 1预处理指令和分类C / C ++程序中的源代码包含各种以#开头的编译指令。
这些指令称为预处理指令。预处理指令不属于C / C ++语言的语法,但是在某种意义上,可以说预处理扩展了C / C ++。
ANSI C定义的预处理指令主要包括四种类型:文件包含,宏定义,条件编译和特殊控制。 1.文件包含文件包含:#include是C编程中最常用的预处理指令。
例如,几乎每个需要输入和输出的C程序都必须包含#include指令,这意味着用此行指令替换stdio.h文件中的整个内容。包含文件的格式为#include,后跟尖括号和双引号“”。
两者之间的主要区别是搜索路径。尖括号形式:例如#include,预处理器直接在系统目录中的相应文件中搜索math.h文件,如果搜索失败,则报告错误。
系统提供的头文件通常采用这种包含方法,而自定义头文件则不能采用这种方法。用双引号引起来:例如#include“ cal.h”,首先在当前工作目录中搜索文件(如果找不到),然后在系统目录中搜索。
包含自定义头文件,通常使用此方法。尽管此方法对于系统头文件是正确的,但它浪费了不必要的搜索时间。
因此,不建议系统头文件使用此方法。 2.宏定义宏定义:包括定义宏#define和删除宏#undef。
从#define开始,您可以定义不带参数的宏定义和带参数的宏。程序通常使用无参数宏定义来定义符号常量。
例如:#define PI 3.1416 //定义无符号宏,或定义符号常量PI #undef表示删除已定义的宏,例如:#undef PI //删除前一个宏的定义3.条件编译条件编译:主要用于有选择地执行相应的操作,以防止重复包含宏替换内容(例如文件等)。常见的条件编译指令是#if,#elif,#else,#endif,#ifdef和#ifndef。
4.特殊控件特殊控件:ANSI C还定义了特殊的预处理指令,例如#error,#pragma。 #error:使预处理器输出指定的错误消息,通常用于调试程序。
#pragma:这是一种更加通用和灵活的指令,可以具有不同的参数选择来完成相应的特定功能操作。调用格式为:#pragma参数。
其中,参数可以包括消息类型,code_seg,一次,警告,打包等。以下预处理指令通常用于将内存设置为与n个字节对齐。
#pragma pack(n)//其中n称为对齐因子,取1,2,4,4,8 ... 2个预处理器及其工作原理C预处理器(C Pre-Processor)经常缩写为CPP,这是一个独立于C编译器的小型程序。预编译器不了解C语言语法。
它仅在编译程序源文件之前实现文本替换功能。目前,预编译器已集成到集成开发环境中。
通常,没有选项可以执行预处理操作。它包含在编译操作中。
即,在选择了编辑操作时,预处理器首先被调用来处理该预处理的指令,所述预处理器的输出,然后被发送到编译器,编译器检查该程序是否是从C语言的语法的角度正确,如果正确,它将生成目标代码文件或机器指令文件。 C预处理程序和C编译器的执行顺序以及输入和输出文件类型如下图所示:来源:http://c.biancheng.net/view/286.html免责声明:本文内容在引用后发布经21ic授权,版权归原作者所有。
该平台仅提供信息存储服务。本文仅代表作者的个人观点,不代表本人的立场。

相关资料

看一下内核的Makefile,Kconfig和.config文件之间的关系技术文章:如何计算STM32串行通信的波特率?工业和信息化部的发言人回答了“芯片短缺”的问题。面对世界英特尔将第11代Core Duo和Ryzen 4000笔记本电脑进行了比较:AMD牺牲了性能来延长电池寿命拥抱5G时代,瑞智科技集团积极探索边缘计算领域基于VCSEL红外光源的DMS解决方案Nvidia推出RTX 3060 Ti显卡,性能再次得到增强iGame GeForce RTX 3060 Ti Advanced OC显卡的理论性能是什么?参加考试小米11 Pro配置:5000万像素索尼IMX766、67瓦无线快充加持苹果A14使用的5nm晶圆高达11万元文章分析了stm32生​​成spwm的原理和过程除了中国和印度市场仍然疲弱之外,日本的机床订单继续下降优惠政策助力华鑫微在涨价潮中保持稳定和深远的影响“ 5G +智能医疗”需要蓬勃发展我国许多省市都在积极发展智能医疗MVG推出SG Evo,这大大提高了SG多探头系统的测试速度和准确性外国电视品牌垄断中国市场的时代可能会结束Ali,Loongson等将帮助建立家庭操作系统和社区影驰RTX 3060Ti金属母版基准性能超越RTX 2060 SUPER定制的iGame GeForce RTX 3080显卡的基准性能是什么? ?