当前位置:网站首页>C语言预处理命令是什么?
C语言预处理命令是什么?
2022-08-09 19:55:00 【nginx】
1) 编译(Compile)会将源文件(.c文件)转换为目标文件。对于 VC/VS,目标文件后缀为.obj;对于,目标文件后缀为.o。
编译是针对单个源文件的,一次编译操作只能编译一个源文件,如果程序中有多个源文件,就需要多次编译操作。2) 链接(Link)是针对多个文件的,它会将编译生成的多个目标文件以及系统中的库、组件等合并成一个可执行程序。
关于编译和链接的过程、目标文件和可执行文件的结构、.h 文件和 .c 文件的区别,我们将在《》专题中讲解。
在实际开发中,有时候在编译之前还需要对源文件进行简单的处理。例如,我们希望自己的程序在 Windows 和 Linux 下都能够运行,那么就要在 Windows 下使用 VS 编译一遍,然后在 Linux 下使用 GCC 编译一遍。但是现在有个问题,程序中要实现的某个功能在 VS 和 GCC 下使用的函数不同(假设 VS 下使用 a(),GCC 下使用 b()),VS 下的函数在 GCC 下不能编译通过,GCC 下的函数在 VS 下也不能编译通过,怎么办呢?
这就需要在编译之前先对源文件进行处理:如果检测到是 VS,就保留 a() 删除 b();如果检测到是 GCC,就保留 b() 删除 a()。
这些在编译之前对源文件进行简单加工的过程,就称为 预处理(即预先处理、提前处理)。
预处理主要是处理以#开头的命令,例如#include <stdio.h>等。预处理命令要放在所有函数之外,而且一般都放在源文件的前面。
预处理是C语言的一个重要功能,由 预处理程序完成。当对一个源文件进行编译时,系统将自动调用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
编译器会将预处理的结果保存到和源文件同名的.i文件中,例如 main.c 的预处理结果在 main.i 中。和.c一样,.i也是文本文件,可以用编辑器打开直接查看内容。
C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等,合理地使用它们会使编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。
边栏推荐
- 微软word怎么转换成pdf文件?微软word转换为pdf格式的方法
- 【kali-权限提升】(4.2.6)社会工程学工具包(中):中间人攻击工具Ettercap
- 请问一下flink cdc mysql source 报这种错怎么处理呢?我都设置了useSSL=f
- DSPE-PEG-Azide, DSPE-PEG-N3, phospholipid-polyethylene glycol-azide can react directly with DBCO
- 一种基于连接和安全熵的网络空间整体安全认识和方法
- How to deal with keys when Redis is large?
- DSPE-PEG-PDP,DSPE-PEG-OPSS,磷脂-聚乙二醇-巯基吡啶可减少肽的免疫原性
- 威纶通触摸屏制作自定义弹出窗口的具体方法(3种)
- Application of Acrel5000web Energy Consumption System in a College-Susie Week
- Win11找不到Internet Explore怎么办
猜你喜欢

大健康产业商业供应链管理系统数字化提升产业链运作效率推动供应链标准化建设

威纶通触摸屏制作自定义弹出窗口的具体方法(3种)

没有 accept,我可以建立 TCP 连接吗?

安科瑞无线物联网智能电表ADW300指导性技术要求-Susie 周

Win11找不到Internet Explore怎么办

《评估、创建和使用知识图谱的限制》2022最新230页博士论文,根特大学

DSPE-PEG-Azide, DSPE-PEG-N3, phospholipid-polyethylene glycol-azide can react directly with DBCO

别叫我玩,我要考PMP:考PMP选择机构需要了解的那些事儿

fixed investment fund

力扣383-赎金信——哈希映射数组法
随机推荐
阿里二面:没有 accept,能建立 TCP 连接吗?
Number of daffodils within a thousand
Cholesterol-PEG-Thiol, CLS-PEG-SH, Cholesterol-PEG-Sulfhydryl for improved solubility
leetcode 二叉树的分层遍历1
win10配置CenterNet环境
LED闪烁 闪灯芯片IC 手电筒IC 闪灯控制IC 闪烁IC流水灯
获取一段程序运行的时间
WPF中加载并使用图像资源
Jmeter 使用正则表达式提取器将返回值全部保存到一个文件中
钢材行业供应链协同管理系统提升企业上下游密切度,精细化企业内部管理
Access control knowledge
【kali-权限提升】(4.2.7)社会工程学工具包:权限维持创建后门、清除痕迹
Unity2D_背景粒子效果
FS4066耐高压1到4节内置MOS的锂电池充电管理芯片
CMake 安装升级更高版本
Prometheus Operator 通过additional 添加target
基于光通信的6G水下信道建模综述
数据集成API如何成为企业数字化转型的关键?
字节二面问的MySQL,差点没答好
【高效工具】远程控制软件 ToDesk(收藏夹)