今天研究c++ const 的问题,顺便做了一下gcc 与 clang 的代码编译错误提示对比,结论是,clang这个晚辈确实比gcc人性化多了。
参考:
http://www.cnblogs.com/Fancyboy2004/archive/2008/12/23/1360810.html
以下是测试代码:
#include <cstdlib>
class Apple
{
public:
Apple (){}; /* constructor */
int GetCount() /* 非const 成员函数 */
{
return m_iData;
};
protected:
int m_iData;
}; /* ----- end of class Apple ----- */
using namespace std;
int main ( int argc, char *argv[] )
{
const Apple apple;
apple.GetCount(); /* 错误 */
return EXIT_SUCCESS;
} // ---------- end of function main ----------
//save to a.cc
gcc编译命令:
$ g++ a.cc
a.cc: In function ‘int main(int, char**)’:
a.cc:22: error: passing ‘const Apple’ as ‘this’ argument of ‘int Apple::GetCount()’ discards qualifiers
clang:
$ clang++ a.cc
a.cc:22:5: error: member function 'GetCount' not viable: 'this' argument has
type 'const Apple', but function is not marked const
apple.GetCount(); /* 错误 */
^~~~~
a.cc:8:13: note: 'GetCount' declared here
int GetCount() /* 非const 成员函数 */
^
1 error generated.
分享到:
相关推荐
1. **语言服务器协议(LSP)**:LSP是一种跨平台的通信协议,它定义了编辑器和语言服务器之间的交互方式,使得各种编辑器能够利用统一的接口获取代码智能提示、错误检查等功能。 2. **代码补全**:Clangd通过分析源...
例如,如果无法打开文件,程序应提供相应的错误提示。 6. **用户界面**: - 游戏的交互通常通过命令行实现,使用`printf`输出提示和信息,`scanf`接收用户输入。虽然简陋,但对于理解基本的输入输出流程非常有帮助...
- **使用编译器**:如GCC或Clang等,将源代码编译成可执行文件。 - **调试技巧**:使用GDB等调试工具,定位和修复程序中的错误。 7. **代码优化**: - **算法优化**:优化比较字母的算法,提高游戏运行速度。 -...
- **编译器**:推荐使用支持C++标准的编译器,如 GCC 或 Clang。 - **开发工具**:可以使用任何集成开发环境 (IDE),如 Visual Studio Code、Eclipse 或 Code::Blocks 等。 #### 五、总结 本文详细介绍了基于C++...
9. **编译与调试**:在开发过程中,开发者会使用编译器(如GCC或Clang)将源代码编译成可执行文件,同时利用调试工具(如GDB)来查找和修复程序中的错误。 10. **版本控制**:在实际项目开发中,版本控制系统如Git...
10. **编译与调试**:在开发过程中,开发者需要使用编译器(如GCC或Clang)将源代码编译为可执行文件,并使用调试工具(如GDB)进行错误排查。 通过这个《计算小能手》程序,学生可以在一个友好的环境下进行计算...
5. **编译与运行**:初学者会了解到如何用C++编译器(如GCC或Clang)将源代码编译成可执行文件,并如何运行这个文件。 6. **结构化编程**:通过编写计算器程序,初学者可以学习到如何使用结构化的编程方法,如自顶...
8. **编译与运行**:在C++中,源代码需要通过编译器(如GCC或Clang)编译成可执行文件,然后才能在计算机上运行。压缩包中的EXE文件是已经编译好的猜数字游戏,可以直接在支持的系统上运行。 通过对源码的分析和...
2. **编译器集成**:内置了C/C++编译器,如GCC或Clang,使得用户可以方便地编译和运行代码,无需手动安装额外软件。 3. **调试器**:提供简单的调试功能,如断点设置、单步执行、查看变量值等,有助于初学者理解...
比如,当读取文件出错或用户输入非法时,可以抛出异常并捕获,提供友好的错误提示。 7. **命令行参数**:如果程序支持命令行参数,可以使用`main`函数中的`argc`和`argv`来解析,允许用户在运行时指定文件路径或...
- **特点对比**: 不同的编译器在性能、编译速度、错误提示等方面有所差异。 **还有些可以配合编译器的开发环境** - **集成开发环境(IDE)**: Visual Studio、Eclipse、Code::Blocks等提供了集成的开发环境,方便...
对于初学者而言,推荐使用**Visual Studio**这样的集成开发环境(IDE),因为它提供了一个友好的用户界面,集成了代码编写、分析、编译和调试等功能。 ##### 2.2 Visual Studio 安装 **Visual Studio**是一款由...
仔细阅读编译和链接过程中的错误提示,它们通常能帮助解决这些问题。 总之,编译开源软件需要理解其依赖关系,并正确配置和管理这些依赖。对于nlmeansC来说,确保正确安装和链接libpng的特定版本是关键步骤,这样...
7. **编译与运行**:为了运行这个游戏,开发者需要一个C编译器(如GCC或Clang),将源代码编译成可执行文件,并可能需要安装和配置相应的库。 8. **学习价值**:这个源码对初学者来说是一个很好的学习资源,可以帮助...
9. **编译与调试**:学习如何使用编译器(如GCC或Clang)编译代码,并利用调试工具(如GDB)进行调试,找出并修复潜在的问题。 10. **版本控制**:虽然这不是技术知识点,但使用版本控制系统(如Git)管理代码版本...
通常,C程序的源代码会包含上述提到的各个组成部分,通过编译器(如GCC或Clang)编译成可执行文件。 总结来说,C语言猜数字小游戏是学习基础编程概念的好例子,涵盖了输入输出、条件判断、循环控制、随机数生成等多...
2. 使用合适的编译器(如GCC或Clang)编译`main.cpp`,解决可能出现的编译错误。 3. 运行编译后的程序,观察输出,与"结果1"进行对比。 4. 分析`main.cpp`中的代码逻辑,理解每个部分的功能。 5. 如果有必要,使用...
使用GCC或Clang等编译器,通过命令行编译源码并运行,观察游戏行为,使用`printf`调试或结合GDB等工具进行调试。 10. **学习资源**: 对于初学者,可以结合《C Primer Plus》、《C程序设计语言》等书籍,结合源码...
10. **编译与执行**:C++程序需要通过编译器(如GCC或Clang)编译成可执行文件。在压缩包中包含了可执行文件,说明作者已经完成了编译步骤,用户可以直接运行。 通过这个游戏项目,不仅可以学习到C++的基本语法和...
1. **编译指南**:对于C程序,编译步骤通常涉及使用`gcc`或`clang`等编译器,并给出相应的命令行选项。 2. **运行说明**:说明如何在终端或命令行中启动程序,包括可能需要的参数。 3. **项目背景**:简述项目的...