C语言预处理
文章目录
目录
文章目录
前言
一、程序编译的过程
二、编译阶段
1.预处理(*.i)
2.编译(*.s)
3.汇编(*.o)
4.链接
总结
前言
提示:使用vs code(gcc编译器)与vs2022来演示c语言的预处理
提示:以下是本篇文章正文内容,下面案例可供参考
一、程序编译的过程
二、编译阶段
以下是使用vscode——gcc编译器
1.预处理(*.i)
test.c
#include <stdio.h>
#include "test.h"
extern int add(int x,int y);
int main()
{//代码int x=10;int y=20;int sum = add(x,y);printf("%d",sum);return 0;
}
test.h
typedef struct test
{int b;char a;
}test1;
我们使用指令编译——》
gcc -E test.c -o test.i
会得到一个*.i的文件
过后我们会看见一个test.i的文件
这个就是预处理文件
内容为下:
分析:
它把test.h和test.c的文件合并在一了并且把注释删除了(还会把#define 宏的符号替换或者删除)【这里没有展现出了,你们可以试试看】
总结:
是有用可用的保留,无用的删除——文本操作
2.编译(*.s)
gcc -c test.i
把预编译文件——》编译文件*.s
会得到汇编代码
如下
.file "test.c".text.def __main; .scl 2; .type 32; .endef.section .rdata,"dr"
.LC0:.ascii "%d\0".text.globl main.def main; .scl 2; .type 32; .endef.seh_proc main
main:pushq %rbp.seh_pushreg %rbpmovq %rsp, %rbp.seh_setframe %rbp, 0subq $48, %rsp.seh_stackalloc 48.seh_endprologuecall __mainmovl $10, -4(%rbp)movl $20, -8(%rbp)movl -8(%rbp), %edxmovl -4(%rbp), %eaxmovl %eax, %ecxcall addmovl %eax, -12(%rbp)movl -12(%rbp), %eaxmovl %eax, %edxleaq .LC0(%rip), %rcxcall printfmovl $0, %eaxaddq $48, %rsppopq %rbpret.seh_endproc.ident "GCC: (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0".def add; .scl 2; .type 32; .endef.def printf; .scl 2; .type 32; .endef
分析:
把c语言转变为汇编
其中有语法分析,语义分析,词法分析,符号分析等
3.汇编(*.o)
gcc -c test.s
把汇编文件变成二进制
4.链接
每一个目标文件由链接器捆绑在一起,形成一个可执行的程序。
1.合并段表
2.符号表的合并和符号表的定位
总结
相关文章:
![](https://img-blog.csdnimg.cn/32c26a6302024a0ca040a7f6e7cc3429.png)
C语言预处理
文章目录 目录 文章目录 前言 一、程序编译的过程 二、编译阶段 1.预处理(*.i) 2.编译(*.s) 3.汇编(*.o) 4.链接 总结 前言 提示:使用vs code(gcc编译器)与vs2022来演示c语言的预处理 提示:以下是本篇文章正文内容,下面…...
![](https://img-blog.csdnimg.cn/e0cdabcbac734378ae32ffe15c1c3a03.png)
git报错大全,你将要踩的坑我都帮你踩了系列
使用git push -u origin master报下面的错: 使用git push -u origin master报下面的错: Updates were rejected because the remote contains work that you do not have locally,This is usually caused by another repository pushing to …...
![](https://img-blog.csdnimg.cn/img_convert/60f1c5a3464bd02322e16d6c720d9e55.png)
LabVIEW中使用.NET方法时出现错误1316
LabVIEW中使用.NET方法时出现错误1316为什么不能调用带有泛型参数的方法?LabVIEW不支持哪些.NET功能?为什么会收到以下错误:发生此错误的原因是正在调用LabVIEW中不支持的.NET功能。有关解决方法,请参阅“其他信息”部分。可以在下…...
![](https://www.ngui.cc/images/no-images.jpg)
HTTP2.0 相比 HTTP1.0、HTTP1.1 有哪些重大改进?值得升级更换吗?
目录 HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比 HTTP发展历史 HTTP2解决的问题 HTTP1.0 HTTP1.1 HTTP2.0...
![](https://img-blog.csdnimg.cn/ae971910a34441a9a5f1f127b51e322a.png)
九、Linux文件 - fopen函数和fclose函数讲解
目录 1.fopen函数 2.fclose函数 3.fopen函数和fclose实战 1.fopen函数 fopen fwrite fread fclose ...属于标准C库 include <stdio.h> standard io lib open close write read 属于Linux系统调用 可移植型:fopen > open(open函数只在嵌入…...
![](https://img-blog.csdnimg.cn/ec45496d2e7040238b0e4e84e4b5885c.png#pic_center)
轨迹预测算法vectorNet调研报告
前言 传统的行为预测方法是规则的,基于道路结构的约束生成多个行为假设。最近,很多基于学习的预测方法被提出。他们提出了对于不同行为假设的进行概率解释的好处,但是需要重构一个新的表示来编码地图和轨迹信息。有趣的是,虽然高精…...
![](https://img-blog.csdnimg.cn/img_convert/80b23950259597e2c6715ab83ead2f25.jpeg)
基于STM32设计的避障寻迹小车
一、前言 1.1 项目背景 根据美国玩具协会在一项研究中,过去几年全球玩具销售增长与GDP的世界平均水平大致相同。但全球玩具市场的内部结构已经占据了巨大的位置变化:传统玩具的市场份额正在下降,高科技电子玩具正在蓬勃发展。全球玩具市场的…...
![](https://www.ngui.cc/images/no-images.jpg)
【视觉检测】使用opencv编写一个图片缺陷检测流程
1. 导入必要的库,如OpenCV,NumPy等。 2. 使用OpenCV读取图像,并将其转换为灰度图像。 3. 使用OpenCV的Canny边缘检测算法检测图像中的边缘。 4. 使用OpenCV的Hough变换算法检测图像中的线条。 5. 使用OpenCV的模板匹配算法检测图像中的缺…...
![](https://www.ngui.cc/images/no-images.jpg)
3.Dockerfile 定制镜像
3. Dockerfile 定制镜像 从上一节的docker commit的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件等信息,但是命令毕竟只是命令,每次定制都得去重复执行这个命令,而且还不够直观ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
Web基础与HTTP协议
Web基础与HTTP协议一、Web基础与HTTP概述1、域名概念二、域名服务与域名注册1、域名定义2、域名服务三、网页访问(http、https)1、网页概述2、网页的基本标签四、Web1、Web概述2、Web1.0 Web2.0五、HTTP协议概述1、HTTP协议简介2、HTTP协议请求总结一、W…...
![](https://img-blog.csdnimg.cn/img_convert/a9bfe783465d89a354c2f8b71a32513b.jpeg)
【化学试剂】endo-BCN-PEG4-Pomalidomide,(1R,8S,9S)-双环[6.1.0]壬-四聚乙二醇-泊马度胺纯度95%+
一、基础产品数据(Basic Product Data):CAS号:N/A中文名:(1R,8S,9S)-双环[6.1.0]壬-四聚乙二醇-泊马度胺英文名:endo-BCN-PEG4-Pomalidomide二、详细产品数据(Detailed Product Data)…...
![](https://img-blog.csdnimg.cn/img_convert/5a1d0fcba1cec7d3b2a77379fc3814cb.jpeg)
全板电镀与图形电镀,到底有什么区别?
衔接上文,继续为朋友们分享普通单双面板的生产工艺流程。 如图,第四道主流程为电镀。 电镀的目的为: 适当地加厚孔内与板面的铜厚,使孔金属化,从而实现层间互连。 至于其子流程,可以说是非常简单&#x…...
![](https://img-blog.csdnimg.cn/66c87da787ee4b6f8f5ce1702370bf03.png)
Zabbix 构建监控告警平台(二)--
Apache监控示例(图形监控)模板TemplateZabbix Items 1.Apache监控示例(图形监控) 1.1创建主机组 在“配置”->“主机群组”->“创建主机群组” 填入组名“webserver_test” 创建完成之后可以在“配置”->"主机群组&…...
![](https://img-blog.csdnimg.cn/img_convert/f949f8bdd89946f88498453b44110642.png)
开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试
开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试如何组织一场微信线上答题考试在线考试是一种非常节约成本的考试方式,考生通过微信扫码即可参加培训考试,不受时间、空间的限制,近几年越来越受企事业单位以及…...
![](https://img-blog.csdnimg.cn/img_convert/608675a86bb08ae893f1251cc6ad1024.png)
蓝牙单点技术实现路径介绍
本文主要介绍蓝牙设备与手机一对一相连的 蓝牙单点 技术。 准备工作 系统要求:蓝牙使用需要安卓 4.3 以及以上版本,智能生活 App SDK 从安卓 4.4 开始支持。Manifest 权限: <uses-permission android:name"android.permission.ACCE…...
![](https://www.ngui.cc/images/no-images.jpg)
Ubuntu22.04 用 `hwclock` 或 `timedatectl` 来设置RTC硬件时钟为本地时区
Ubuntu22.04用 hwclock 或 timedatectl 来设置硬件时区为本地时区 可以用hwclock命令 sudo hwclock --localtime --systohc👆效果等同👇 , --localtime的简写是-l ; --systohc的简写是-w sudo hwclock -l -w也可以用timedatectl命令 👆效果…...
![](https://img-blog.csdnimg.cn/b7cd35158967434d9a888d2f4b4292ea.jpeg)
Node=>Express路由 学习2
1.概念 Express路由指的是客户端的请求与服务器处理函数之间的映射关系 Express路由由三部分组成 请求类型 请求URL地址 处理函数 app.METHOD ( PATH , HANDLER )根据定义的先后顺序进行匹配 请求类型和请求的URl同时匹配成功才会调用相应的处理函数 简单用法 2.模块化路由 为了…...
![](https://img-blog.csdnimg.cn/img_convert/3a250a13e59cb694d2a5e8bba31dc125.png)
Android 面试三部曲——你做到了几点?
今天的干货来点轻松一点的,这次的分享是《面试需要哪些准备?》,主要分为三个部分: 面试前。面试中。面试后。 面试前 1、『工作经验中的职位要层层递进:初、中、高、资深级』🍒 2.投简历 你的简历必须要…...
![](https://img-blog.csdnimg.cn/868e8998981c4839acf34389fb8bdf15.png)
windeployqt实现一键打包
每次发布QT程序前,都必须要在命令行环境下运行windeployqt 工具进行打包,加载相关的lib文件,才能正常运行。但是在命令行模式下,每次都要手动输入windeployqt的目录,和应用程序的位置目录,效率非常低,见下图: 那QT有没有什么好用的工具可以避免这个问题呢,认真找了一下…...
![](https://img-blog.csdnimg.cn/img_convert/d72779d91a74f595e51502ce88b3da20.png)
ESP32S3系列--SPI主机驱动详解(二)
一、目的 在上一篇《ESP32S3系列--SPI主机驱动详解(一)》我们介绍了ESP32S3的SPI外设的基本情况以及主机驱动的一些知识点,包括主机驱动的特点、总线的初始化、从设备的加入、传输模式分类等等。 本篇我们将从代码角度帮助大家进一步理解传输接口的一些细节问题。 二、实战 …...
![](https://img-blog.csdnimg.cn/d339464ac861478d936f88102fabea7f.png)
51单片机15单片机 时钟芯片DS1302【更新中】
前言 现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。 本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路主要特点是采用串行数据传输,可为掉电…...
![](https://img-blog.csdnimg.cn/img_convert/cbd64d5a2054646b69280d55be49cc49.jpeg)
SaleSmartly(ss客服)带你了解:缩短B2B销售周期的秘诀
缩短B2B销售周期的秘诀:即时聊天 关键词:B2B 销售;即时沟通;SaleSmartly(ss客服) 在B2B销售中,时间就是一切。在某些情况下,买家正在积极寻找即时解决方案,潜在客户以多种…...
![](https://img-blog.csdnimg.cn/0aa8b31c576543bbb1a826f9a3e01930.png)
九龙证券|A股苏州板块迎来“200+”里程碑
2月10日,跟着裕太微登陆科创板,A股“姑苏板块”正式迎来第201位成员。姑苏也成为继京、沪、深、杭之后,第5个具有A股上市公司总数超越200家的城市。 现在,姑苏不仅生长为位居全国前列的“制作之都”,更成为资本市场高地…...
![](https://img-blog.csdnimg.cn/324ee71c81b647b1abaa8b4a4a86128d.png)
vcruntime140_1.dll无法继续执行代码,怎么解决这种问题?
经常使用电脑的人,可能对于这个弹出框应该不陌生,“vcruntime140_1.dll无法继续执行代码”,其实会出现这种情况,主要是因为缺少一个动态链接库 (DLL) 文件导致的。这个文件是 Visual C 2015 库的一部分,某些程序需要这…...
![](https://img-blog.csdnimg.cn/b744f772318a473ca05bc11b96a2d5ed.png)
正大国际期货:外盘震荡行情的特征及突破信号的确立
投机市场上,趋势交易应该是交易操作理念的灵魂和核心;能够顺应大的趋势,交易将变得简单,也更容易赚到钱。下面正大IxxxuanI详细来给大家讲讲 投资市场是由千万个交易个体所组成的复杂系统,走势具有不确定性࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
【ESP 保姆级教程】玩转emqx数据集成篇④ ——数据桥接之HTTP服务
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-10 ❤️❤️ 本篇更新记录 2023-02-10 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
![](https://img-blog.csdnimg.cn/3759b274e8054c18b8cf169778fc4b28.png)
蓝桥杯算法训练合集十三 1.P06022.P07033.逗志芃的危机4.唯一的小可爱5.JOE的矩阵
目录 1.P0602 2.P0703 3.逗志芃的危机 4.唯一的傻子 5.JOE的矩阵 1.P0602 问题描述 编写一个程序,输入一个4位的自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后用最大数减去最小数,得到一…...
![](https://img-blog.csdnimg.cn/3b8e9387dd2b444aada3ea531943d59b.png)
切换分支报错:Untracked Files Prevent Checkout
切换分支报错:Untracked Files Prevent Checkoutgit分支切换 Untracked Files Prevent Checkout本人解决办法:git分支切换 Untracked Files Prevent Checkout 新起的项目在切换master分支到工作分支时,出现下图的问题: Untracked…...
![](https://img-blog.csdnimg.cn/img_convert/f788ef0fd81e699f581528ee33330826.jpeg)
endo-BCN-PEG4-Palmitic,环丙烷环辛炔四聚乙二醇-Palmitic包装灵活
endo-BCN-PEG4-Palmitic,endo环丙烷环辛炔四聚乙二醇-Palmitic反应特点:endo-BCN-PEG4-Palmitic 酯在其末端含有一个 Palmitic基和一个 BCN 基。对点击试剂来说同样会通过不同的小分子PEG进行连接,BCN-PEG-acid、BCN-PEG-NHS ester、BCN-PEG-…...
![](https://img-blog.csdnimg.cn/7f108eb4e79841d4ba730f45e4333eea.png)
多传感器融合定位十一-基于滤波的融合方法Ⅱ
多传感器融合定位十一-基于滤波的融合方法Ⅱ1. 编码器运动模型及标定1.1 编码器基础知识1.2 编码器运动模型1.2.1 旋转半径求解1.2.2 角速度求解1.2.3 线速度求解1.2.4 位姿求解1.3 编码器的标定1.3.1 轮子半径标定1.3.2 轮子与底盘中心距离标定2. 融合编码器的滤波方法2.1 核心…...
![](/images/no-images.jpg)
电脑网站开发学习/上海关键词优化的技巧
1.概述 libpcap (Packet Capture Library)是一个网络数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库。它是一个独立于系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架。功能非常强大,Linux 下著名的 tcpdump 就是以它为基础的。该库提供的…...
![](https://img2018.cnblogs.com/blog/1422573/201810/1422573-20181024151721405-2093161439.png)
在网站中动态效果怎么做/seo优化网站百度技术
前言: 1.Eureka介绍: Spring Cloud Eureka,使用Netflix Eureka来实现服务注册与发现,它既包含了服务端组件,也包含了客户端组件,并且服务端与客户端均采用Java编写,所以Eureka主要适用于通过Jav…...
![](/images/no-images.jpg)
做百度网站排名软件/seo内链优化
poj上的中文题面,大家一定要亲眼见证一下 分析: 这道题和poj1222大同小异 还是异或方程求解 唯一不同的就是,需要计算方案数 这就和那些不确定的元素有关了 每个不定元都有两种选择:开或关 所以方案数就是 2^(不定元个数) tip 怎么确定…...
网站域名可以更换吗/kol推广是什么意思
目录 1. TCP/IP四层协议模型 3. HTTP的请求方式GET和POST有什么区别? Get/Post请求 1.Get请求: 2. Post请求 转发与重定向的区别 4. Django框架,Flask框架和Tornado框架各有什么优缺点?为什么你的项目会选择使用Django框架? 5. 什么是ORM?…...
![](https://img-blog.csdnimg.cn/img_convert/9c3d3eb9b991693801ee95b5b475497b.png)
国内做医疗耗材的网站/搜索引擎的工作原理是什么
下载MySQL官方下载网站在MySQL官网https://dev.mysql.com/downloads/ 上默认只能下载最新的版本,现在MySQL5.7已经被放到了这个页面历史版本里,点击Looking for previous GA versions。点击下载MySQL572.然后根据操作系统位数选择对应的版本选择MySQL安装…...
![](https://imgedu.lagou.com/pip_install1.jpg)
wordpress 主题 2016/有创意的营销案例
Python Python开发 Python语言 Windowns系统下搭建python环境本文介绍下在windows系统下安装python和python环境搭建。 安装PYTHON 首先,我们去python的官方网站下载python安装包。官网地址:https://www.python.org/downloads/ 跳转到官网后,…...