查看 gcc/g++ 预编译结果

转自:《程序员的自我修养——链接、装载与库》第39页


以前使用一些框架,比如gtest时,里面的宏定义的比较复杂,使用时总觉得看不清真面目,也就是说不知道使用了其中的宏以后最终展开成什么样子。下面是一个解决办法:

以下面的m.cpp为例说明。

#define FOO_ADD(a, b)   (a + b)
#define FOO_SUB(a, b)   (a - b)
#define FOO_MUL(a, b)   (a * b)

int main(){
        int a = 1, b = 4, c;
        c = FOO_MUL(FOO_ADD(a, b), FOO_SUB(a, b));
        return 0;
}


gcc -E m.cpp -o m.i

cpp m.cpp > m.i

都能生成文本文件m.i,内容如下:

# 1 "m.cpp"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "m.cpp"




int main(){
 int a = 1, b = 4, c;
 c = ((a + b) * (a - b));
 return 0;
}

这样的m.i,看起来就一目了然了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值