疯狂debug的故事
1.if里的等号
if(second==60)
if(second=60)
少写了一个等号,运行结果不对
前面是对的样子,后面是不对的样子。判断出来是run出的错,就去检查了一下,然后就看出来了
2.多个for循环嵌套里语句命令的位置
几个for套起来,放错位置了,就循环的不对更新的次数不对。往里放了一层,拿出来了这是。
3.class定义完以后大括号后面要加;
4.忘记加分号了,在语句后面
这个还好说,因为在debug后面一看就看出来了
5.time.h里面的月份数拼写是简写
是tm_mon而不是tm_month
成功执行的快乐!
6.[Error] empty character constant
cout<<''<<"o_o";
这是因为当字符常量为空格字符时,不能只输入两个单引号,还必须在两个单引号之间输入一个空格;不然编译的时候就报错,提示空字符,
两个单引号之间不加任何内容是不允许的
7.[Error] prototype does not match for
'void automobile::set_data(char*, char*, int, int, int)'any in class 'automobile'
这个错误是定义函数时函数包含的变量类型以及数量与函数初始化的时候括号里的内容不匹配
这种错误在函数量比较多的时候易出现
8.[Error] 'strcpy' was not declared in this scope
在前面加上 就ok
#include<windows.h>
9.cin>>a;而不是cin<<a;
10.[Warning] multi-character character constant [-Wmultichar]
cout<<'\b\b\b'<<" ";不对,应该是"\b\b\b"
11.[Error] ld returned 1 exit status
1.程序没有主函数
2.printf/scanf书写错误
3.1在主函数中出现自定义函数名书写错误(即出现在主函数前未出现的自定义函数)
3.2当自定义函数只进行了声明,主函数便进行调用
4.上一个运行结果未关闭
我的原因是用的函数没加上对应的头函数
#include <mmsystem.h>是mciSendString(str,NULL,0,NULL);对应的头函数
emm, mciSendString又他自己的特殊性,只加哥头文件不能解决问题,这个问题以后再说吧
12.void print_ymd();空格别忘
这是个class里的print函数,但是得加()
13.[Error] expected ';' at end of member declaration
在class里定义函数的时候,后面必须加上分号,否则就会报这个错
public:Date(char *ps);
14.[Error] extra qualification 'Date::' on member 'Date' [-fpermissive]
这个是class下面那个大括号后面那个没加,让devc以为你在class里面定义函数,其实你是在class外面定义函数滴
15.[Error] new types may not be defined in a return type
类声明或定义结束时没有加;
16.Date (*ps)
Date::Date(char *ps):year(1900),month(1),day(1)
{
char py[5],pm[3],pd[3];
strncpy(py,ps,4);
ps=ps+5;
strncpy(pm,ps,2);
ps=ps+3;
strncpy(pd,ps,2);
int yy=atoi(py),mm=atoi(pm),dd=atoi(pd);
这个不能执行,俺也不知道为啥
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
这个报错可能和这个char *ps也有关系;
17.有return 0/return 1的函数类型,不是void而是int
18.没有参数的构造函数
定义的时候的格式:
OrderedCollection()
{
strcpy(a,"you haven't input any parameters!");
};
//{}()这俩缺一不可
使用的时候
OrderedCollection c1;//没参数千万别加上小括号!
否则会报错
[Error] request for member 'class里的函数' in 'class的名字', which is of non-class type 'class的原名'
19.memset(a, 0, strlen(a));可以但是memset(a, 0, sizeof(a));(未解决
这个可以看出来sizeof和strlen的区别
所以判断是否为空,尽量用strlen,别用sizeof,sizeof连/0都算
memset用别的文件里strlen和sizeof都可以清空,但是这个文件只能strlen,也不知道为啥
20.插入老同时在末尾替换一个(未解决
最后叹号前面的那个是不想要的,应该是s
用含参的构造函数完全没问题
————————————————
版权声明:本文为CSDN博主「我不是盖茨比」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_51464352/article/details/123074375