对于执行 C 或者 C++ 程序,需要借助 gccg++)指令来调用 GCC 编译器。

  • 对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件
  • 对于以 .cpp 为扩展名的文件,GCC 会自动将其视为 C++ 源代码文件

1. GCC自动识别的文件扩展名

除此之外,GCC 编译器还可以自动识别多种扩展名,如下表所示,即根据不同的扩展名确定该文件该怎样编译。


注意,上表仅罗列了 GCC 编译器可识别的与 CC++ 语言相关的文件后缀名。除此之外,GCC 编译器还支持 GoObjective-C等编程语言的编译。详情请参考 GCC官网

如果当前文件的扩展名和上表 ,还能使用 GCC 编译器吗?答案是肯定的。只需要借助 -x选项(小写)指明当前文件的类型即可。

示例 test 文件

#include <iostream>int main()
{std::cout << "hello,world" << std::endl;return 0;
}

显然,这是一段完整的 C++ 语言程序,但由于其存储在无扩展名的 test文件中,如果直接使用 g++ 指令调用 GCC 编译器,则执行会报错:

wohu@ubuntu:~/cpp/src$ g++ test
test: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
wohu@ubuntu:~/cpp/src$

可以看到,GCC 编译器无法识别 test 这个文件。这种情况下,就必须使用 -x 选项手动为其指定文件的类型,例如:

wohu@ubuntu:~/cpp/src$ g++ -xc++ test
wohu@ubuntu:~/cpp/src$ ls
a.out  test
wohu@ubuntu:~/cpp/src$ ./a.out
hello,world
wohu@ubuntu:~/cpp/src$

可以看到,通过为 g++ 指令添加 -xc++ 选项,表明当前 test 为 C++ 语言程序文件,由此 GCC 编译器即可成功将其编译为 a.out 可执行文件。

-x 指令参数的含义:

  • -xc:指定 C 语言文件
  • -xc++:指定 C++ 语言文件
  • -xc-header:C 语言头文件
  • -xc++-heade:C++ 程序头文件

2. GCC -std 编译标准支持项

对于编译 CC++ 程序来说,借助 -std 选项即可手动控制 GCC 编译程序时所使用的编译标准。也就是说,

  • 当使用 gcc 指令编译 C 语言程序时,我们可以借助 -std 选项指定要使用的编译标准;
  • 当使用 g++ 指令编译 C++ 程序时,也可以借助 -std 选项指定要使用的编译标准;

-std 选项的使用方式很简单,其基本格式如下:

gcc/g++ -std=编译标准

示例如下:

g++ test.cpp -o test -std=c++11

注意,不同版本的 GCC 编译器,所支持使用的 C/C++ 编译标准也是不同的。

注意,表头表示的是各个编译标准的名称,而表格内部的则为 -std 可用的值,例如 -std=c89、-std=c11、-std=gnu90 等(表 2 也是如此)。

gcc 自动识别的文件扩展名,gcc/g++ -x 选项指定语言,不同 gcc 版本 -std 编译选项支持列表相关推荐

  1. c语言 m文件是什么,M文件扩展名 - 什么是.m以及如何打开? - ReviverSoft

    你在这里因为你有,有一个文件扩展名结尾的​​文件 .m. 文件与文件扩展名 .m 只能通过特定的应用程序推出.这有可能是 .m 文件是数据文件,而不是文件或媒体,这意味着他们并不是在所有观看. 什么是 ...

  2. c语言中hpp是什么文件,HPP文件扩展名 - 什么是.hpp以及如何打开? - ReviverSoft

    你在这里因为你有,有一个文件扩展名结尾的​​文件 .hpp. 文件与文件扩展名 .hpp 只能通过特定的应用程序推出.这有可能是 .hpp 文件是数据文件,而不是文件或媒体,这意味着他们并不是在所有观 ...

  3. 根据文件扩展名得到文件对应该类型Icon方法

    2019独角兽企业重金招聘Python工程师标准>>> 根据文件扩展名得到文件对应该类型Icon方法 package com.fleety.util; import java.awt ...

  4. Response.setContentType类型按文件扩展名首字母分类大全

    文件扩展名首字母 自定义扩展名 a b c d e f g h i j k l m n o p q r s t u v w x y z 数字开头扩展名 自定义扩展名 文件扩展名 Content-Typ ...

  5. 常见文件扩展名及其说明(转)

    常见文件扩展名及其说明(转)[@more@]AAM Authorware shocked文件AAS Authorware shocked包ABF Adobe二进制屏幕字体ABK CorelDRAW自动 ...

  6. 【无标题】常见文件扩展名(后缀)及其对应文件类型和功能

    Windows/linux通过文件的后缀名来区分各种不同的文件,同种类型的文件可以使用相同的文件后缀名也称文件的扩展名,本质或者说差异所在是文件根据后缀区分文件属性和存储格式,不同的文件类型就像不同的 ...

  7. Windows 常见文件扩展名和说明

    Windows 常见文件扩展名和说明 A ACE:Ace压缩档案格式 ACT:Microsoft office助手文件 AIF,AIFF:音频互交换文件,Silicon Graphic and Mac ...

  8. 文件扩展名,你知道这些吗?(续)

    ----- I ------- ICA Citrix文件 ICB Targa位图文件 ICC Kodak打印机格式文件 ICL 图标库文件 ICM 图形颜色匹配配置文件 ICO Windows图标 I ...

  9. Go 学习笔记(53)— Go 标准库之 path(判断绝对路径、拆分目录和文件、组合路径、返回路径目录、获取路径最后文件名、获取文件扩展名、路径匹配规则)

    1. 概述说明 import "path" path 实现了对斜杠分隔的路径的实用操作函数. 2. 主要函数 2.1 func IsAbs func IsAbs(path stri ...

最新文章

  1. 分享10个原生JavaScript技巧
  2. 通过python实现超市购物系统(通过列表简单实现版)
  3. JavaMail学习之一-邮件传输协议
  4. java的知识点30——设计模式
  5. 文档协同编辑帮助企业迎接大数据时代
  6. 是什么故障码_大众途观报P2187、P0101故障,差点就换发动机了
  7. Java JDK1.8新特性之四大函数式接口
  8. Linux下Kafka单机安装配置
  9. C++调用C#编写的DLL【转】
  10. java面试题:2018年6月
  11. 两台android相互ADB实现一台安卓手机给另一台安卓手机ADB
  12. 利用mk802(rk3066处理器)架设linux网站
  13. 太极图php代码,如何实现太极图
  14. Linux压缩、解压、打包文件 修改文件所属组
  15. BUUCTF RSA题目全解3
  16. 【历史上的今天】4 月 28 日:人工智能理论之父出生;大众点评上线;苹果开设 iTunes 音乐商店
  17. aria2简单下载脚本
  18. 美团/饿了么外卖CPS联盟返利公众号小程序裂变核心源码
  19. 量子计算(七):量子系统
  20. Linux进程内存分析pmap命令

热门文章

  1. java写游戏的聊天怎么写_怎么用JAVA编写一个打字游戏
  2. pycharm配置远程调试docker
  3. oracle sqlserver 查看指定用户下面的表
  4. 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练
  5. ONNX 实时graph优化方法
  6. 实用的Linux 安装 zip unzip
  7. Docker核心技术之数据管理
  8. [JAVA EE] 内联用法
  9. python 把2个列表或者2个元组转成字典
  10. Android TextView 中间添加划线与 底部添加划线