新手学习C++笔记3:调试错误之C与C++的区别
2014-08-09 11:02
323 查看
今天运行一段程序出现了一些错误,觉得对于像我这样的新手来说,有必要对这些错误进行总结一下,希望对以后的学习有所警醒。
程序如下:
#include<iostream>
一运行就会出现这样的错误:“error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int”
究其原因,原来在C 语言里面是默认返回int, 而C++ 比较严谨,标准C++的main需要返回值,所以main的前面必须有类型标识符,
这也是C与C++一个明显的区别。
main()函数一般用int或者void形的。个人比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。
所以在main前加int类型,但是只加上int会出现下面这种错误:
“error C2470: “main”: 看起来像函数定义,但没有参数列表;跳过明显的函数体”
因为C++中必须定义 main 函数的入口参数和类型,改成:int main(int argc,char*argv[]) 就可以了。对于int main(int argc,char*argv[])
其中: argc是命令行中的参数的个数
argv[]对应每一个参数
例如程序编译成为 cp.exe,然后在命令行中输入 c:\>cp.exe adc apc
这行中有三个字符串分别为 cp.exe adc apc
则argc为3,即argc是命令行中参数的个数。
char *argv[]为一个指像字符串的数组。
argv[0]="cp.exe"
argv[1]="adc"
argv[2]="apc"
即命令行中各各字符串保存在 *argv[]
再回到上面的程序,如果你不小心在“int main(int argc,char*argv[])”后面加个“;”的话就会出现:
error C2447: “{”: 缺少函数标题(是否是老式的形式表?),
所以在编程序的时候一定要注意一些细节,特别要看看是不是英文状态下输入,否则一个小小的失误会浪费很长时间。
程序如下:
#include<iostream>
using namespace std; class myclass { int a; public: void set_a(int num); int get_a(); }; void myclass::set_a(int num) { a=num; } int myclass::get_a() { return a; } main() { myclass ob1,ob2; ob1.set_a(10); ob2.set_a(99); cout<<ob1.get_a()<<endl; cout<<ob2.get_a()<<endl; return 0; }
一运行就会出现这样的错误:“error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int”
究其原因,原来在C 语言里面是默认返回int, 而C++ 比较严谨,标准C++的main需要返回值,所以main的前面必须有类型标识符,
这也是C与C++一个明显的区别。
main()函数一般用int或者void形的。个人比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。
所以在main前加int类型,但是只加上int会出现下面这种错误:
“error C2470: “main”: 看起来像函数定义,但没有参数列表;跳过明显的函数体”
因为C++中必须定义 main 函数的入口参数和类型,改成:int main(int argc,char*argv[]) 就可以了。对于int main(int argc,char*argv[])
其中: argc是命令行中的参数的个数
argv[]对应每一个参数
例如程序编译成为 cp.exe,然后在命令行中输入 c:\>cp.exe adc apc
这行中有三个字符串分别为 cp.exe adc apc
则argc为3,即argc是命令行中参数的个数。
char *argv[]为一个指像字符串的数组。
argv[0]="cp.exe"
argv[1]="adc"
argv[2]="apc"
即命令行中各各字符串保存在 *argv[]
再回到上面的程序,如果你不小心在“int main(int argc,char*argv[])”后面加个“;”的话就会出现:
error C2447: “{”: 缺少函数标题(是否是老式的形式表?),
所以在编程序的时候一定要注意一些细节,特别要看看是不是英文状态下输入,否则一个小小的失误会浪费很长时间。
相关文章推荐
- 新手学习C++笔记1:调试错误之找不到标识符
- 新手学习C++笔记7:结构体、联合体的区别与联系
- C++学习笔记5__错误处理和调试 动态内存 副本构造器
- 【C++】【学习笔记】【030-031】错误处理和调试
- C++新手关于标准库学习笔记
- c++学习笔记序列之错误码整理(不断更新中)
- Android 学习笔记——利用JNI技术在Android中调用、调试C++代码
- 学习笔记 --- LINUX应用调试之修改内核输出应用程序的段错误信息
- MFC学习笔记003之调试错误DebugAssertionFailed!File:afx.inl Line:157
- 《Javascript高级程序设计》(第2版)学习笔记15--错误处理与调试
- Android 学习笔记——利用JNI技术在Android中调用、调试C++代码
- Android 学习笔记——利用JNI技术在Android中调用、调试C++代码
- C++ FAQ学习笔记 17章 异常和错误处理
- C++学习笔记17,构造函数体内初始化数据成员与构造函数初始化器的区别(一)
- [学习笔记]Hadoop 配置调试错误收集
- JavaScript高级程序设计 错误处理与调试学习笔记
- C++基础学习笔记----第十四课(new和malloc的区别、单例模式等深入)
- C/C++学习笔记3 - cin深入分析(下) - cin的错误处理(原创)
- C++学习笔记之结构体与类的区别
- C++学习笔记序列之返回语句区别总结