1. 过程
1.1 预处理
也称为预编译,做些文本替换工作。编译器执行预处理指令(以#开头,例如#include),这个过程会得到不包含#指令的.i文件。这个过程会拷贝#include 包含的文件代码,进行#define 宏定义的替换 ,处理条件编译指令 (#ifndef #ifdef #endif)等,#pragma once不会去掉。
命令:
gcc -E -I./inc test.c -o test.i
or
cpp test.c -I./inc -o test.i
#pragma once和#ifdef的区别
都是为了避免同一个文件被include多次,在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别,举例如下:
// Test1.h
#if !define (__TESTONE_H_)
#define __TESTONE_H_
#endif

本文详细介绍了C语言从源代码到可执行文件的整个编译过程,包括预处理、编译、汇编和链接四个阶段,并对比了静态编译与动态编译的区别。
最低0.47元/天 解锁文章
17万+

被折叠的 条评论
为什么被折叠?



