c语言编译过程--预处理探索(代码片段)

胡刚2021 胡刚2021     2023-03-09     728

关键词:

环境 Ubuntu21.04

hello.c

#include <stdio.h>

#define HAHA 123
int main()

	int i = HAHA;
	printf("hello world\\n");
	return 0;

通过下面的命令对hello.c文件进行预处理

gcc -E hello.c > hello.e


可以看到预处理后的文件 hello.e 的文件大小是 hello.c 的大概160倍
因为文件太大,为了简单了解这个文件里面有什么内容,我不得不节选一些重要内容

猜测预处理是将 stdio.h 头文件的所有的内容拷贝了一份放在 hello.c 的 main 函数之前(如果不是可以在评论区帮我指正)
这里是对基本数据类型进行了重定义

stdio.h 中的 标准io 的声明

stdio.h 中的 printf 函数的声明

文件读写函数的声明

输入函数的声明

输出函数的声明

输出字符函数的声明

这里的宏被替换为实际的数字

c语言编译过程,满满的干货!!!(代码片段)

程序环境和预处理一、程序翻译和运行环境二、预处理详解1.预定义符号2.define定义宏3.#和##的区别4.宏和函数好坏比较5.命名约定6.头文件中<>和""区别7.条件编译一、程序翻译和运行环境翻译环境:在翻译环境中ÿ... 查看详情

c语言----程序编译(预处理)(代码片段)

...到运行结果的大体过程编译1)预编译gcctest.c-E>test.i预处理后停止完成文本操作完成头文件包含#define定义的符号和宏的替换去除注释2)编译gcctest.i-S生成test.s的文件把C语言代码转化为汇编代码编译部分深入学习编译原... 查看详情

c语言预处理(代码片段)

预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。当我们写了一个代码,从一个文本文件的代码... 查看详情

makefile第三课:c语言的编译(代码片段)

...i文件gcc-Emain.cgcc-Emain.c-ohelloworld.i-E选项告诉编译器只进行预处理操作-o选项把预处理的结果输出到指定文件2.2GeneratingAssemblyLanguagegcc-Smain.cgcc-Smain.c 查看详情

makefile(代码片段)

...完后有一些常见的输出文件.a 静态库(文档).c 需要预处理的C语言源代码.h C语言源代码的头文件.i 经过预处理后的C语言源代码.o 目标文件(经过汇编产生).s 经过编译后产生的汇编语言代码编译过程.c->.i->.s->.o1... 查看详情

c语言中程序的编译(预处理操作)+链接详解(详细介绍程序预编译过程)(代码片段)

...目录1.前言2.翻译环境和运行环境2.1翻译环境2.2运行环境3.预处理详解3.1预定义符号3.2#define定义的标识符常量和宏3.2.1#define定义的标识符常量3.2.2#define定义的宏3.2.3#define替换规则3.2.4#和##3.2.5带副作用的宏参数3.3宏和函数的对比4.... 查看详情

gcc/g++编译(代码片段)

...test.c-otest实质上,上述编译过程是分为四个阶段进行的:预处理(也称预编译,Preprocessing)编译(Compilation)汇编(Assembly)连接(Linking)预处理gcc-Etest.c-otest.i#或gcc-Etest.c可以输出test.i文件中存放着test.c经预处理之后的代码。预处理结果就... 查看详情

c语言重点难点精讲c语言预处理(代码片段)

文章目录一:C/C++程序程序编译过程(1)预处理(2)编译(3)汇编(4)链接二:宏定义(1)数值宏常量(2)字符串宏常量(3)使用宏充当注释( 查看详情

基础复习gcc构造可执行程序的过程(代码片段)

假设源文件为:tmp.c预处理阶段:编译器驱动程序调用C语言预处理器(cpp),生成ASCII中间文件(.i)gcc选项为“-E”gcc-Etmp.c-otmp.i编译阶段:驱动程序运行C编译器(cc1),生成ASCII汇编语言文件(.s)gcc选项为"-S"gcc-Stmp.i-otmp.s汇编阶段:驱动程序... 查看详情

gcc编译的过程(代码片段)

...线开发实践》。gcc对c/c++语言的编译过程分为四个阶段:预处理、编译、汇编、链接。1,预处理:是对源程序中的伪指令、特殊符号进行处理的过程。(展开所有宏定义、处理条件编译命令和预编译指令、删除注释等)首先编写... 查看详情

c语言编译过程(代码片段)

C语言编译过程#mermaid-svg-5rPU3g0o30PkwiNU.labelfont-family:\'trebuchetms\',verdana,arial;font-family:var(--mermaid-font-family);fill:#333;color:#333#mermaid-svg-5rPU3g0o30PkwiNU.labeltextfill:#333#merm 查看详情

linux常用工具(代码片段)

...了程序的稳定性和可移植性。GCC编译过程分为四个阶段:预处理、编译、汇编、链接。如下图所 查看详情

[ios开发]编译过程(代码片段)

...们来看看编译过程,总的来说编译过程分为几个阶段:预处理->词法分析->语法分析->静态分析->生成中间代码和优化->汇编->链接具体过程命令行查看编译的过程:clang-ccc-print-phasesmain.m结果:(一)... 查看详情

c/c++程序编译过程详解

...编代码,源文件的编译过程包含两个主要阶段:1.1.1编译预处理读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令主要包括以下四个方面:宏定义指令,如#defineNameTokenString,#undef等。对于前一个伪指... 查看详情

c/c++程序编译过程详解

...编代码,源文件的编译过程包含两个主要阶段:1.1.1编译预处理读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令主要包括以下四个方面:宏定义指令,如#defineNameTokenString,#undef等。对于前一个伪指... 查看详情

linuxcgcc的使用(代码片段)

...链接生成可执行文件编译后结构更多信息见gcc编译过程#预处理demo.c->demo.igcc-Edemo.c-odemo.i#编译成汇编语言demo.i->demo.sgcc-Sdemo.i-odemo.s# 查看详情

c语言-预处理(代码片段)

C语言中编译流程:预处理编译汇编链接预定义符号__FILE__进行编译的源文件__LINE__文件当前的行号__DATE__文件被编译的日期__TIME__文件被编译的时间__STDC__如果编译器遵守C语言标准,其值为1,否则未定义或为0__DATE__和__... 查看详情

c:初识(代码片段)

...解释一下每一行代码#include<stdio.h>这一行代码是一条C预处理指令(preprocessordirective),是什么是预处理?就是编译器在编译前的准备工作,即预处理。stdio.h文件包含了供编译器使用的输入和输出的函数。通常,在C程序顶部... 查看详情