1、简单总结c/c++文件的编译3个过程

1)、预处理器进行预编译

  比如我们测试这段代码
#include <stdio.h>int main()
{printf("hwllo word\n");return 0;
}

主要做的事情是:

(1)将所有的#define删除,并且展开所有的宏定义。说白了就是字符替换
(2)处理所有的条件编译指令,#ifdef #ifndef #endif等,就是带#的那些
(3)处理#include,将#include指向的文件插入到该行处
(4)删除所有注释
(5)添加行号和文件标示,这样的在调试和编译出错的时候才知道是是哪个文件的哪一行
(6)保留#pragma编译器指令,因为编译器需要使用它们。

我们可以采用gcc -E命令来实现
gcc -E hello.c -o aa.c

然后我们查看aa.c文件

vim aa.c
extern int __vsprintf_chk (char * restrict, int, size_t,const char *

C和指针之预处理器之普通c/c++文件的编译过程相关推荐

  1. CSS预处理器之Sass与Less

    本篇内容主要讲述css预编译器sass与less: Sass sass(Syntactically Awesome Stylesheets)是css预处理器,可帮助开发人员复用css代码开发,节省开发 ...

  2. 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  3. c语言编译过程详解,预处理,编译,汇编,链接(干货满满)

    楔子 我们在各自的电脑上写下代码,得明白我们代码究竟是如何产生的,不想了解1,0什么的,但这几个环节必须掌握吧. 我们的代码会经过这4个环节,从而形成最终文件,c语言作为编译语言,用来向计算机发出指令 ...

  4. 行程单图片python预处理_GCC编译过程(预处理-gt;编译-gt;汇编-gt;链接)

    前言 如果你使用集成环境开发.那么你点击编译按钮就可生成可执行文件.但是C程序从源代码到二进制行程序都经历了那些过程?你知道吗?这些过程集成开发环境在点击编译按钮后都做完了,如果编译没有出错,即可生成 ...

  5. 丁鹿学堂:css预处理器之less学习(一)

    less介绍 less是比较好用的css预处理语言. less增加了很多好用的新特性. 常用的有变量,混入,嵌套,计算等 我们要注意的是,less不管是在服务器还是在浏览器中,都不能直接被使用,而是要 ...

  6. css预编译其器,CSS预处理器之——Less

    Less,顾名思义,少,在我看来,它有着与jQuery一样的思想--Write Less,Do More,尽管实际上这两者是完全不同的两个东西. Less是一个CSS预处理器,先不管人们为何这样命名, ...

  7. Snort预处理器之`sfPortscan`

    文章目录 1 sfPortscan 预处理器简介 2 sfPortscan 预处理器支持的端口扫描类型 2.1 Portscan 2.2 Decoy Portscan 2.3 Distributed ...

  8. C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值

    1.定义函数指针 typedef int (* fun) (); static fun f; 2.代码实现 3.结果 4.总结 我们可以这样使用 在a.h文件里面里面定义函数指针,并且有个传递函数指针 ...

  9. C语言之预处理探究(三):头文件包含

    相关博文:C语言之预处理探究(四):#.##和预定义宏 相关博文:C语言之预处理探究(二):条件编译(Condition Compile) 相关博文:C语言之预处理探究(一):宏 参考博文:C语言的头 ...

最新文章

  1. SAP S4HANA Buiness Partner名词解析
  2. WebForm 【上传图片--添加水印】
  3. AWS re:Invent 2019 召开 | 云原生生态周报 Vol. 30
  4. GitHub Pages搭建属于自己的静态网站,并绑定个人域名
  5. 1026 程序运行时间 (15 分)
  6. 取多补少C语言,leetcode题目: 数字的补数 的C语言解法
  7. Linux中如何让进程(或正在运行的程序)到后台运行?[zz]
  8. NWT内斗:为了还不值钱的股份
  9. leetcode Generate Parentheses python
  10. 个人电话号码查询系统
  11. 无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解
  12. canvas 角度 弧度 换算
  13. 电脑无法设置默认打开方式的解决办法
  14. UWA DAY 2021 精彩盘点 | 35场技术议题掀起的思维浪潮
  15. 项目管理之项目整体管理
  16. 微信域名检测API接口实现方法及原理
  17. 【Hotel TV】三星商用TV解决方案
  18. pycharm调试时显示图片
  19. 怎么修复录音笔(设备)损坏的WAV或MP3文件0字节文件
  20. 【爱加密】Android App应用安全加固详细步骤

热门文章

  1. .NET6 新功能和新生态
  2. 如何对 string 进行Base64编码,解码?
  3. Dotnet Core应用跨框架版本运行
  4. [C#.NET 拾遗补漏]14:使用结构体实现共用体
  5. 在.NET中使用DiagnosticSource
  6. 5分钟快速接入钉钉实现钉钉考勤
  7. 基于.NetCore3.1搭建项目系列 —— 使用Swagger导出文档 (番外篇)
  8. 同源策略_如何支持跨域
  9. 我的 .NET Core 博客性能优化经验总结
  10. PowerBI 11月更新 数据PPT是否会引领新一轮革命