gcc 是c的编译器,g++是c++的编译器。cc一般是一个符号连接,指向gcc。CC一般是makefile里面的一个名字,具体是什么根据实际情况决定。

gcc和g++都是GNU(组织)的一个编译器。

误区一:gcc只能编译c代码,g++只能编译c++代码

两者都可以,但是请注意:

1,后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。

2,编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。

误区二:gcc不会定义__cplusplus宏,而g++会

实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,如果后缀为.c,并且采用gcc编译器,则该宏就是未定义的,否则,就是已定义。

误区三:编译只能用gcc,链接只能用g++

严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。

请问CC cc gcc g++本质区别在什么地方?
传统上, UNIX OS 会配带 C compiler by default. 一般用符号名 cc. 而C++ compiler 需要另外买.

常见的有:
Linux: gcc/g++
Solaris: cc/CC
HP-UX: aCC
AIX: xlc/xlC
SCO: ?/?

几乎所有的情况, C/C++ compiler 都只是front end driver. 后面的编译器是一样的. 比如gcc, g++ 提供不同的选项给编译器以及link editor. 这些包括用户选项, 缺省选项, 对应的缺省系统库. 每个compiler有一个configuratoin file来指定这些缺省选项. 使用 verbose mode (-v) 可以看到这些内容.

C++ 程序因为语法(namespace, class, overload...), 需要mangle 所有的symbol name. 与C程序link的时候需要用extern "C".

C++的编译器肯定可以编译C的的代码,注意除了C++对C的语法扩充之外,编译和链接C和C++的标准库通常也不一样呢。我用gcc而非g++也编译了C++的程序就证明了这一点。

转载于:https://www.cnblogs.com/dongxiaoguang/archive/2013/02/13/2910813.html

不同的编译器:GCC G++ C C++的区别相关推荐

  1. Linux 之 编译器 gcc/g++参数详解

    2016年12月9日16:48:53 ----------------------------- 内容目录: [介绍]  gcc and g++分别是gnu的c & c++编译器 gcc/g+ ...

  2. 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile

    目录 一.开发工具 二.Linux编辑器 - vim使用 2.1 vim 的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2. ...

  3. Linux编译器-gcc/g++的使用

    ★★★★★ 是小夏啊! 我们知道,当我们用像VS等这样的编译器写完代码后,会通过快捷键操作或是编译器上相应的选项来编译运行,紧接着我们一般通过控制面板来观察程序运行的结果,从而判断自己写的程序代码是否 ...

  4. 【Linux系统】开发工具(上) {软件包管理器yum,更新yum源,文本编辑器vim,vim的四种基本模式,vim指令集,代码编译器gcc/g++}

    一.软件包管理器:yum 1.1 yum是什么? Linux下软件的安装方法: 源码安装:下载源码,在本地自行编译,然后才能安装. rpm安装:红帽软件包管理工具,属于安装包安装. yum安装:本身会 ...

  5. GCC G++ C C++的区别

    gcc 是c的编译器,g++是c++的编译器.cc一般是一个符号连接,指向gcc.  CC一般是makefile里面的一个名字,具体是什么根据实际情况决定.  gcc和g++都是GNU(组织)的一个编 ...

  6. 【Linux】Linux编译器gcc/g++的使用

    今天不学习,明天变垃圾. 文章目录 一.程序的翻译过程 1.预处理(1.2.3把你的代码编译成二进制代码) 2.编译(C语言 ==> 汇编语言) 3.汇编(无法被执行的二进制文件,为什么捏?) ...

  7. Linux | 编译器gcc/g++的使用【动静态库的认识】

    文章目录 一.对程序的认知 && 初识gcc 1.程序是如何诞生的? 2.gcc的初步认识 3.如何使用gcc 二.gcc逐步分析程序的翻译环境 1.预编译[进行宏替换] 2.编译[C ...

  8. 【linux系统编程】基础开发工具:gcc/g++

    Linux C/C++ 编译器 – gcc/g++ 正文开始@Assassin 目录: Linux C/C++ 编译器 -- gcc/g++ 1. gcc/g++ 基本用法: 2. C/C++编译基本 ...

  9. gcc/g++超详细上手教程

    Linux编译器-gcc/g++使用: 写在开篇:详细介绍一哈 Linux下gcc/g++ 的使用,收藏起来呀~~ 正文开始@Assassin 目录: Linux编译器-gcc/g++使用: 1. 背 ...

最新文章

  1. suse linux ps简介
  2. Javascript之预加载图片
  3. php 数组合并_PHP数组常用函数分类整理
  4. (网页)js每隔5分钟执行一次ajax请求的实现方法(转)
  5. 我的2015年读书计划,每两周读完一本书!
  6. ZooKeeper程序员指南--使用ZooKeeper开发分布式应用程序
  7. 计算机二级制作简历张静,张静的简历值30分!其他都不是问题
  8. Extjs Ext.net中的常用属性
  9. Linux宝库名人轶事栏目 | 感恩每一天
  10. php 通过 谷歌邮箱发送邮件
  11. 服务器对大文件传输有限制怎么办,20G、100G、200G大文件怎么通过网络远程传输,一招快速解决网络传输大文件...
  12. 基于HTML5的电子病历编辑方法及系统与流程
  13. 2021年武大计算机学院研究生,武汉大学
  14. iPhone X 的适配
  15. 数学建模:预测性模型学习——灰色预测模型(GM(1,1)模型)
  16. 波斯王子-时之沙 怀念
  17. Python 轻量化简繁转换
  18. 【李开复】从诚信谈起 (一)
  19. iOS6和iOS7环境下微信登录未显示问题微信IOS的SDK:isWXAppInstalled总是返回NO和nil...
  20. PowerDesigner创建导出模版,并生成数据库文档(word文档)

热门文章

  1. Thunar 右键菜单等自定义
  2. AnswerOpenCV(1001-1007)一周佳作欣赏
  3. LeakCanary——直白的展现Android中的内存泄露
  4. Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】
  5. 安装oracle 11g 客户端,检查过程中报物理内存不足的解决
  6. 研发阶段模拟接口数据
  7. python学习之路基础篇(第八篇)
  8. JS脚本显示当前日期+星期几[转]
  9. PDFMate PDF Converter Pro
  10. 碰到一个微软的bug:CWinAppEx::GetString