学习了很久的C/C++如果还是搞不清这些基础知识的话很说不过,但是宏函数,内联函数这方面又很少使用,很容易遗忘,下面我来总结一下。
编译的过程
一般一个程序的编译分为四步,预处理,编译,汇编,连接。
预处理:展开头文件,替换宏定义,去掉注释,条件编译Linux下生成.i后缀的文件。命令时gcc -E;
将预处理后的文件转换成汇编语言,生成.s文件,编译的过程实质上是把高级语言翻译成机器语言的过程,即对a.c做了这些事儿
(1)词法分析,
(2)语法分析
(3)语义分析
(4)优化后生成相应的汇编代码
从 高级语言->汇编语言->机器语言(二进制)
gcc -S hello.c -o a.s可以生成汇编代码
汇编:汇编变为目标代码(机器代码)生成.o的文件
链接:连接目标代码,生成可执行程序
编译过程连接
宏函数
其实是很简单的,只需要注意要给每个元素加括号,一行写不完要续航符。因为宏只是替换;
#include <iostream>
2 #include <string>
3 #include <vector>
4 using namespace std;
5 #define SWP(a,b) ({\
6 a = a^b;\
7 b = b^a;\
8 a = a^b;\
9 })
10 int main(){
11 int a = 1;
12 int b = 2;
13 SWP(a,b);
14 cout<<a<< b<<endl;
15 return 0;
16 }
~