G++与Gcc

一、gcc与g++的区别

          gcc与g++都是GNU的一个编译器。

1.1  误区一

       gcc只能编译c代码,g++只能编译C++代码,其实两者都可以,因为仅仅针对的是编译阶段。

在编译阶段,g++会调用gcc,对于C++代码,两者是等价的,但是因为gcc命令不能自动和C++程

序使用的库链接,所以使用g++来完成链接,为了统一起见,干脆编译/链接统一用g++了。因此给

人的错觉就是cpp程序只能用g++一样。

        为了证明上述说的正确性,我们进行实验,如下图1-1所示: 注意,这里要用到下面第二章的

内容gcc常用参数选项,-c表示的是只是编译、汇编成机器代码,而不进行链接,如果使用的是-o

百分百是报错的,如下图1-2所示,那如果非想用gcc编译并链接成可执行文件呢?那你真是死脑筋

哈哈哈哈,直接用g++不好吗,花里胡哨的!!!其实也可以用gcc编译并链接成可执行文件,使

用参数-lstdc++即可,如下图1-3所示:

                                                               图 1-1 gcc编译

    

图1-2  gcc链接错误

图1-3  gcc链接成功

1.2 误区二

      gcc不会定义_cplusplus宏,而g++会,这个是误区的。

       实际上,这个宏只是标志着编译器会把代码按C还是C++语法来解释,如果后缀为.c文件的开

并且采用gcc编译器,则该宏就是未定义的,否则就是已经定义的。

1.3 误区三

      编译只能用gcc,链接只能用g++,这个是混淆了,不能说是错误。编译可以用g++/gcc,而链

接可以用g++或者是gcc -lstdc++。

     gcc命令不能自动和c++程序使用的库链接,所用通常使用g++,但是在编译阶段,g++会自动调

用gcc,二者等价的。

二、gcc常用参数选项

      

          前面4个参数就不说了,着重讲一下-D参数,在程序编译的时候指定一个宏!!!指定宏就

是让我们在调试的时候较好的定位到自己想知道的位置,输出的结果可以在日志里面查看!

       下面我在vim编辑器里面写一个测试案例,形象说一下这个宏的作用。

        上述是我写了一个宏,如果定义了这个宏的话,就会输出里面的语句,意思就是如果你想知

道那个语句的信息,可以自己定义宏,然后会输出相关信息的。

     如下所示:若不加-D参数的话,不会打印这个printf语句的。

但是如果加上-D并且后面跟上相应的宏,输出如下:

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值