您的位置:首页 > 编程语言 > C语言/C++

新手学习C++笔记3:调试错误之C与C++的区别

2014-08-09 11:02 323 查看
今天运行一段程序出现了一些错误,觉得对于像我这样的新手来说,有必要对这些错误进行总结一下,希望对以后的学习有所警醒。

程序如下:

#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: “{”: 缺少函数标题(是否是老式的形式表?)

所以在编程序的时候一定要注意一些细节,特别要看看是不是英文状态下输入,否则一个小小的失误会浪费很长时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: