未定义类的报错
来源:互联网 发布:软件实施考核指标 编辑:程序博客网 时间:2024/05/13 11:16
1、变量未定义
变量的定义我们都知道,不过,有时候我们写的代码,明明已经定义了,而且还没啥语法错误,但是,就是一直报错。下面看这个例子:
int main(){ printf("Please Enter->\n"); int n=0; scanf("%d",&n); return 0;}
这是一个简单的提输入,然后接收数据的代码,不过,在VS2008上,这段代码是编不过去的,二宝的错误是:error C2065: “n”: 未声明的标识符。
可能在其他编译器上这里是没有问题的,但是在VS2008上,这里的n未声明,原因是:n的定义不是在最上面的,就是这么简单,只需将n定义在printf上面即可:
int main(){ int n=0; printf("Please Enter->\n"); scanf("%d",&n); return 0;}
2、函数未定义
同样的道理,在调用函数的时候,这个问题也会被遇到,下面看一个简单的调用函数代码:
int main(){ int num=0; printf("Please Enter->\n"); scanf("%d",&num); if(is_prime(num)) { printf("num is prime !\n"); } else { printf("num is not prime !\n"); } return 0;}int is_prime(int n){ int i=0; for(i=2;i<n/2;i++) { if(n%i == 0) return 0; } return 1;}
这里我把被调用的函数写在主函数下面,那么就会报错:
“is_prime”未定义;假设外部返回 int
解决的方案有两种:
一是,在主函数前面在声明一下被调函数即可
int is_prime(int n);int main(){ int num=0; printf("Please Enter->\n"); scanf("%d",&num); if(is_prime(num)) { printf("num is prime !\n"); } else { printf("num is not prime !\n"); } return 0;}int is_prime(int n){ int i=0; for(i=2;i<n/2;i++) { if(n%i == 0) return 0; } return 1;}
另外一种就是直接吧被调函数写在主函数上面:
int is_prime(int n){ int i=0; for(i=2;i<n/2;i++) { if(n%i == 0) return 0; } return 1;}int main(){ int num=0; printf("Please Enter->\n"); scanf("%d",&num); if(is_prime(num)) { printf("num is prime !\n"); } else { printf("num is not prime !\n"); } return 0;}
这样更方便一些,而且,我建议以后函数的时候保持这个良好的习惯,至少在刚学的时候保持。
3、 结构体未定义
同样的事情也会发生在结构体上,写结构体的时候也是一定要写在使用这个结构体的函数之前,要不然,会出现结构体未定义的现象(这个错误我犯过……)
例如:
void change(struct student stu) { stu.score[0] = 100; strcpy(stu.name, "jerry"); } struct student { int num; char name[20]; float score[3]; }; int main() { struct student stu; stu.num = 12345; strcpy(stu.name, "Tom"); stu.score[0] = 67.5; stu.score[1] = 89; stu.score[2] = 78.6; change(stu); printf(format, stu.num, stu.name, stu.score[0], stu.score[1],stu.score[2]); printf("\n"); return 0; }
应该为:
struct student { int num; char name[20]; float score[3]; }; void change(struct student stu) { stu.score[0] = 100; strcpy(stu.name, "jerry"); } int main() { struct student stu; stu.num = 12345; strcpy(stu.name, "Tom"); stu.score[0] = 67.5; stu.score[1] = 89; stu.score[2] = 78.6; change(stu); printf(format, stu.num, stu.name, stu.score[0], stu.score[1],stu.score[2]); printf("\n"); return 0; }
1 0
- 未定义类的报错
- $未定义报错
- 未定义变量报错
- 【error】页面报错$未定义
- Eclipse CDT gcc 报错 对‘exp’未定义的引用
- js代码总报变量未定义的错
- imread读取图像出现“未定义标识符”报错的解决方法
- 【js报类型未定义的错误】20140826
- JQuery EasyUI 运行报错 “Jquery未定义”
- 未定义 cos sin 函数报错
- PHP 变量未定义报错 解决方案
- MATLAB报错:未定义函数或变量
- 引用math.h的时候,数学函数报错为未定义的符号
- 【前端js或jq报过的错】插件采坑总结。ztree未定义的jquery
- 解决webchart在updatepanel中报'c1wc_C1WebChart' 和 'c1cb_createcontext' 未定义的JS错
- websphere 无法启动,报错 krb5Spn 属性中遇到未定义的产品变量 HOST
- ubuntu 下运行程序报错 对‘std::cout’未定义的引用
- bootstrap-datetimepicker报错:无法获取未定义或 null 引用的属性slice
- 怎么“偷”看别人微信公众号真实粉丝量?
- 纪念快要结束的16年!!!
- %E7%AE%80%E5%8D%95%E5%8D%9A%E5%AE%A2
- MySQL新增用户以及数据库访问授权
- Android Fragment完全解析,关于碎片你所需知道的一切
- 未定义类的报错
- hibernate tool 从数据库逆向生成Hibernate带注解的实体类
- iOS 判断一个字符串是否是纯数字
- 小游戏2048的实现逻辑和实现过程
- 图论500题
- 数字证书原理,公钥私钥加密原理
- Hibernate如何调用存储过程
- 简单博客
- [BZOJ]1051: [HAOI2006]受欢迎的牛 强连通