【一天一个C++小知识】011.C++编译的流程

本文详细介绍了C语言从源代码到可执行文件的整个编译过程,包括预处理、编译、汇编和链接四个阶段,并对比了静态编译与动态编译的区别。
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值