大话C++语言:编译器
C++语言的编译器是将C++源代码转换为机器可执行代码的工具。以下是一些广泛使用的C++编译器:
- GNU Compiler Collection (GCC):GCC是一个自由软件编译器集合,支持C、C++、Objective-C、Fortran、Ada和Go等多种编程语言。它是最流行的开源C++编译器之一,广泛用于各种操作系统和平台上。
- Clang:Clang是基于LLVM的C、C++、Objective-C和Objective-C++编译器前端。它以其出色的错误消息、性能以及丰富的源代码静态分析工具而闻名。
- Microsoft Visual C++ (MSVC):MSVC是微软开发的C++编译器,与Visual Studio集成。它为Windows平台提供了强大的开发工具,包括集成开发环境、调试器和性能分析工具。
- Intel C++ Compiler (ICC):由Intel开发的C++编译器,提供了自动向量化和并行化等高级优化特性,特别适用于需要高性能计算的应用。
- Borland C++:Borland系列编译器(包括早期的Turbo C++)曾经非常流行,尤其是在DOS和Windows 3.1时代。Borland C++ Builder Compiler是其中的一个产品,它包括了对ANSI/ISO C++语言的支持。
- Watcom C++:Watcom C++是一个历史悠久的编译器,以其在DOS时代的高效编译而著称。现在,Watcom C++作为Open Watcom开源包发行,支持多种操作系统。
- Digital Mars C++ Compiler:Digital Mars是一款高性能的C和C++编译器,它包括了一个集成开发环境和多种编程工具,如反汇编器和资源编译器。
- Tiny C Compiler (TCC):TCC是一个小型的C语言编译器,虽然它主要用于C语言,但也支持一些C++特性。
- Code::Blocks:Code::Blocks是一个轻量级的C++集成开发环境,它支持多种编译器,包括GCC和Clang,并且提供了代码自动补全、调试和版本控制等功能。
- Qt Creator:基于Qt框架的C++集成开发环境,它提供了一套完整的工具集,用于开发跨平台的应用程序。
这些编译器各有特点,其中,GCC和Clang因其开源和跨平台特性在许多Linux发行版中被广泛采用;而MSVC则在Windows平台上提供了优秀的集成开发体验。
扩展知识:
g++ 和 gcc 是GNU编译器集合(GNU Compiler Collection,简称GCC)中的两个相关但独立的编译器,它们都用于从源代码生成可执行程序,不过它们分别针对不同的编程语言。
- gcc:
- gcc 是GNU C Compiler的缩写,它是GCC中用于编译C语言程序的编译器。
- 它支持多种与C语言相关的语言标准,如ANSI C(ISO C89)、ISO C99、ISO C11等。
- gcc 也可以用于编译C++程序,但需要链接C++标准库。在某些系统中,可能存在一个名为c++的符号链接到g++,这样你就可以使用c++命令来编译C++程序。
- g++:
- g++ 是GNU C++ Compiler的缩写,它是GCC中用于编译C++程序的编译器。
- 它不仅包含了gcc的功能,还增加了对C++特定特性的支持,如类、模板、异常处理等。
- g++ 默认链接C++标准库(如libstdc++),而gcc 默认链接C标准库。
因此,它们之间的具有以下关系:
- 相同之处:
- 它们都是GCC编译器集合的一部分。
- 它们共享底层的优化器和代码生成器,因此对于底层的C代码,两者在优化和生成的机器代码方面可能是相同的。
- 不同之处:
- gcc 主要用于编译C语言程序,而g++ 用于编译C++程序。
- g++ 在编译C++程序时会启用C++语言特性,并链接C++标准库,而gcc 需要额外指定链接C++标准库的选项(如-lstdc++)。
- g++ 支持C++特有的编译选项和编译阶段,如模板元编程、名称修饰(name mangling)和RTTI(运行时类型识别)。
g++ 是GNU编译器集合中用于编译C++程序的编译器。如果Linux操作系统没有安装g++的话,以Ubuntu为例,参考以下命令安装g++
g++ 常用命令如下表所示:
g++ 常用告警选项如下表所示:
- VS Code编写\”hello, world\”,源代码文件名helloworld.cpp
- Linux环境下,使用g++编译并生成helloworld的可执行程序
- Linux环境下,执行helloworld可执行程序
- 预处理指令#include <iostream>
- #include 是一个预处理指令,它告诉编译器在编译之前要包含指定的头文件。
- <iostream> 是一个标准库头文件,它包含了C++标准库中关于输入/输出流的对象和函数的声明。 <iostream> 提供的 std::cout 对象,它代表标准输出流,用于向控制台输出数据。
- 主函数int main()
- main 函数是C++程序的入口点,即程序从这里开始执行。
- int 是 main 函数的返回类型,表示 main 函数将返回一个整数。
- 在操作系统中,这个返回值通常用于指示程序是否成功执行。通常,返回 0 表示程序成功执行,而非零值表示出现错误。
- 输出语句 std::cout << \”Hello, World!\” << std::endl;
- std::cout 是一个输出流对象,用于向标准输出(通常是控制台或终端)发送数据。
- << 是一个插入运算符,用于将数据发送到输出流。
- \”Hello, World!\” 是一个字符串字面量,表示要输出的文本内容。
- std::endl 是一个流操纵符,它向输出流插入一个换行符,并刷新输出缓冲区,确保数据立即被显示在控制台上。
- 返回值 return 0;
- return 语句用于从函数中返回一个值。
- 在 main 函数中,return 0; 表示程序成功执行,并返回状态码 0。
—E N D—
喜欢的记得关注哦!
您的支持是我们前进的动力!
点赞关注一下
C语言编译器(C语言编程软件)
对于当前主流桌面操作系统而言,可使用 Visual C++、GCC 以及 LLVM Clang 这三大编译器。
Visual C++(简称 MSVC)是由微软开发的,只能用于 Windows 操作系统;GCC 和 LLVM Clang 除了可用于 Windows 操作系统之外,主要用于 Unix/Linux 操作系统。
像现在很多版本的 Linux 都默认使用 GCC 作为C语言编译器,而像 FreeBSD、macOS 等系统默认使用 LLVM Clang 编译器。由于当前 LLVM 项目主要在 Apple 的主推下发展的,所以在 macOS中,Clang 编译器又被称为 Apple LLVM 编译器。
MSVC 编译器主要用于 Windows 操作系统平台下的应用程序开发,它不开源。用户可以使用 Visual Studio Community 版本来免费使用它,但是如果要把通过 Visual Studio Community 工具生成出来的应用进行商用,那么就得好好阅读一下微软的许可证和说明书了。
而使用 GCC 与 Clang 编译器构建出来的应用一般没有任何限制,程序员可以将应用程序随意发布和进行商用。
MSVC 编译器对 C99 标准的支持十分有限,直到发布 Visual Studio Community 2019,也才对 C11 和 C17 标准做了部分支持。 所幸的是,Visual Studio Community 2017 加入了对 Clang 编译器的支持,官方称之为——Clang with Microsoft CodeGen,当前版本基于的是 Clang 3.8。
C语言从诞生到现在,更新、迭代了多个版本,比如 C99、C11、C17 等。有关这些版本和它们之间的区别,我会在《C语言的三套标准:C89、C99和C11》一文中做详细地介绍。
也就是说,应用于 Visual Studio 集成开发环境中的 Clang 编译器前端可支持 Clang 编译器的所有语法特性,而后端生成的代码则与 MSVC 效果一样,包括像 long 整数类型在 64 位编译模式下长度仍然为 4 个字节,所以各位使用的时候也需要注意。
为了方便描述,本教程后面涉及 Visual Studio 集成开发环境下的 Clang 编译器简称为 VS-Clang 编译器。
而在嵌入式系统方面,可用的C语言编译器就非常丰富了,比如:
- 用于 Keil 公司 51 系列单片机的 Keil C51 编译器;
- 当前大红大紫的 Arduino 板搭载的开发套件,可用针对 AVR 微控制器的 AVR GCC 编译器;
- ARM 自己出的 ADS(ARM Development Suite)、RVDS(RealView Development Suite)和当前最新的 DS-5 Studio;
- DSP 设计商 TI(Texas Instruments)的 CCS(Code Composer Studio);
- DSP 设计商 ADI(Analog Devices,Inc.)的 Visual DSP++ 编译器,等等。
通常,用于嵌入式系统开发的编译工具链都没有免费版本,而且一般需要通过国内代理进行购买。所以,这对于个人开发者或者嵌入式系统爱好者而言是一道不低的门槛。
不过 Arduino 的开发套件是可免费下载使用的,并且用它做开发板连接调试也十分简单。Arduino 所采用的C编译器是基于 GCC 的。
还有像树莓派(Raspberry Pi)这种迷你电脑可以直接使用 GCC 和 Clang 编译器。此外,还有像 nVidia 公司推出的 Jetson TK 系列开发板也可直接使用 GCC 和 Clang 编译器。树莓派与 Jetson TK 都默认安装了 Linux 操作系统。
在嵌入式领域,一般比较低端的单片机,比如 8 位的 MCU 所对应的C编译器可能只支持 C90 标准,有些甚至连 C90 标准的很多特性都不支持。因为它们一方面内存小,ROM 的容量也小;另一方面,本身处理器机能就十分有限,有些甚至无法支持函数指针,因为处理器本身不包含通过寄存器做间接过程调用的指令。
而像 32 位处理器或 DSP,一般都至少能支持 C99 标准,它们本身的性能也十分强大。而像 ARM 出的 RVDS 编译器甚至可用 GNU 语法扩展。
下图展示了上述C语言编译器的分类。
2.C语言:开发环境设置(IDE安装、编译器、调试工具)
C语言是一种广泛使用的高级编程语言,它允许程序员编写接近硬件层面的代码。为了有效地编写和测试C语言程序,开发者需要设置一个合适的开发环境。本文将详细介绍如何设置C语言的集成开发环境(IDE)、编译器以及调试工具。
集成开发环境(IDE)是一个包含代码编辑器、编译器和调试器的应用程序,它提供了编写代码、编译、运行和调试程序的一体化解决方案。对于C语言开发,有几个流行的IDE可以选择:
- Visual Studio:适用于Windows平台,提供了强大的功能和用户友好的界面。
- Code::Blocks:一个开源的IDE,支持多平台(Windows、Linux、Mac OS X)。
- Eclipse CDT:Eclipse的C/C++开发工具,支持多平台。
- NetBeans:同样支持多平台,提供C/C++插件。
- CLion:由JetBrains开发,是一个跨平台的商业C/C++ IDE。
以Visual Studio为例,下面是安装过程的简要说明:
- 访问Visual Studio官方网站:https://visualstudio.microsoft.com/
- 选择适合你的操作系统版本的Visual Studio版本(如Visual Studio Community)并下载。
- 运行下载的安装程序。
- 在安装过程中,选择“使用C++的桌面开发”工作负载。虽然我们关注的是C语言,但这个选项包含了必要的C语言编译器和工具。
- 完成安装过程并启动Visual Studio。
下载运行VisualStudioSteup.exe,点击是
点击继续
可能需要等一会时间
进入安装界面
现阶段学习使用勾选以下就可以了。
点击安装
此时需要联网安装,安装时间根据具体网速条件。
重启系统,安装成功了!
点击启动
可以用Microsoft登录,或是以后再说。
大多数IDE都自带编译器。例如,Visual Studio自带MSVC(Microsoft Visual C++),它可以编译C和C++代码。如果你选择的IDE没有自带编译器,或者你想使用其他编译器,你可能需要单独安装。以下是一些常见的C语言编译器:
- GCC:GNU编译器集合,是Linux下最常用的编译器。
- Clang:一个基于LLVM的编译器前端,支持C、C++和Objective-C。
- MSVC:Microsoft Visual C++编译器,通常与Visual Studio捆绑。
如果需要安装GCC,可以按照以下步骤进行:
- 在Linux上,通过包管理器安装,如在Ubuntu上使用命令:
- 在Windows上,可以安装MinGW(Minimalist GNU for Windows)或Cygwin。
- 在Mac OS X上,可以通过Xcode安装或使用Homebrew:
调试工具是程序员用来测试和修复代码中错误的工具。大多数IDE提供了内置的调试工具。例如,Visual Studio提供了一个非常强大的调试器,可以通过IDE界面直接访问。
在配置调试工具时,你需要确保:
- IDE中已经配置了正确的编译器和调试器路径。
- 你的项目设置中启用了调试信息的生成。在Visual Studio中,这通常意味着使用“Debug”配置而不是“Release”配置。
- 学习如何在IDE中设置断点、检查变量值、单步执行代码等。
设置完成后,最好通过编写、编译和调试一个简单的C语言程序来测试你的开发环境。以下是一个简单的C语言程序示例:
将上述代码保存为hello.c,然后在你的IDE中打开它。编译并运行程序,如果你看到控制台输出了“Hello, World!”,则表示你的开发环境已经成功设置。
设置一个适合C语言开发的环境是编写高质量C程序的第一步。选择一个合适的IDE,正确安装编译器和调试工具,将帮助你提高开发效率。确保你熟悉所选IDE的功能和工具,这将在调试和解决问题时为你节省大量时间。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。