编译的过程、宏,内联函数,宏函数

学习了很久的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 }
~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值