赞
踩
比较了两种不同类型的变量,指针和整型
此部分转载自:https://blog.csdn.net/imyang2007/article/details/8296331
使用gcc编译代码是报出错误:
error: ‘for’ loop initial declarations are only allowed in C99 mode
note: use option -std=c99 or -std=gnu99 to compile your code
这是因为在gcc中直接在for循环中初始化了增量:
//这种语法在gcc中是错误的,必须先定义i变量
for (int i = 0; i < len; i++)
正确写法:
int i;
for (i = 0; i < len; i++)
//这是因为gcc基于c89标准,换成C99标准就可以在for循环内定义i变量了:
//gcc src.c -std=c99 -o src
检查函数定义的范围 ,在一个函数内部不允许再定义函数
f 没有进行声明
此部分转载自:https://blog.csdn.net/a379039233/article/details/83755740
#include <iostream>
//#include <string>
int main()
{
std::string str = "test";
std::cout <<str<< std::endl;
return 0;
}
上述代码报错,error: C2679: 二进制“<<”: 没有找到接受“std::string”类。
iostream 里面包含的是老的string代码(Microsoft Visual Studio 14.0\VC\include) xstring,他的代码并没有重载<<操作符,如下图:
而新的C++ 标准string代码(Microsoft Visual Studio 14.0\VC\include\string) 则重载了<<,如下:
所以必须添加头文件,用最新的标准库string。
运行错误,调用了没有分配的内存
我这一次是因为自定义了一个参数为字符数组的自定义函数,但是输入了一个int类型的数组
转载自:https://www.cnblogs.com/kinson/p/7922225.html
1.第一次是因为很粗心地把int main错写成了int msin()
2.第二次是因为写错了自定义函数名
此部分转载自:https://www.cnblogs.com/xiaoZQ/p/5203580.html
没有写using namespace std;
需要在两个>之间加一个空格,
把queue<pair<int,int>> q;变成queue<pair<int,int> > q;
在一个函数内部不许再定义函数
自定义的map变量与库中重名,修改为其他变量名即可
同样,有时候end、left、right作为变量名时也会与库中的发生冲突
误把一个int变量当成了数组名使用
同理,把一个double型变量当成了数组名
原因是定义了相同的变量
把代码中的case改成Case就不会出现这样的情况,应该是case与标准库里的名称起了冲突。
链接:https://blog.csdn.net/glp_hit/article/details/8635049
这表示编译的时候出现了错误,我这次是因为超出了定义的数组的空间。
我这次是因为定义了一个int n;和一个int n[100];名称冲突了
https://blog.csdn.net/kerouacs/article/details/79291762
声明变量时,下面这样是定义了一个STU *型的变量p和一个STU型的变量a。
STU *p, a;
如果要定义两个STU *型的变量,需要写成
STU *p, *a;
*p->a这样是不对的,应该写成(*p)->a
一般这种情况就是缺大括号
段错误就是指访问的内存超过了系统所给这个程序的内存空间,需要检查有没有内存溢出
可能是访问了没有规定的内存,比如数组的arr[-1]
https://blog.csdn.net/u010150046/article/details/77775114
今天用POJ做题才知道,如果要用using namespace std;的话前面的头文件要有#inlcude<iostream>,否则会出现编译错误
链接:https://blog.csdn.net/zhenshiyiqie/article/details/8445237
头文件加上#include<functional>
由于Devcpp比较老了,会出现这个问题
解决方法:
1)如果不想修改代码,可以直接在OJ上进行编译,OJ的C++版本一般比较新,都会支持unordered_map
如果需要在本地进行编译,有如下的方法:
2)https://blog.csdn.net/fantasy_94/article/details/86425018
3)https://www.cnblogs.com/llllrj/p/9510239.html
使用的一个函数的返回值类型是void,而有对它进行了赋值处理。
我这次是因为没有写algorithm头文件,reverse函数在这个头文件内。
https://zhidao.baidu.com/question/137297696.html
https://blog.csdn.net/qq_40732350/article/details/82946117
我这次是因为给一个自定义函数起名为union,改成Union之后就好了
https://blog.csdn.net/qq_27565063/article/details/80658718
没有正确的使用next类型,注意看一下next的类型
不同类型的指针进行了赋值
int类型和char*类型的变量在同一行
我这次是因为某个地方少了一个括号
还有可能是某一个函数或者变量没有在使用之前声明。
next跟库里的属性或方法重名了
上面的next是和iostream里的内容重名了,删除了头文件iostream就好了
https://blog.csdn.net/zhaohaibo_/article/details/89322902
之前开了一个 f [ 1 < < 20 + 5 ] [ 20 ] f[1<<20+5][20] f[1<<20+5][20]的数组,报出了上面的错误
改成了 f [ 1 < < 20 ] [ 20 ] f[1<<20][20] f[1<<20][20]就没事了
所在行出现了非法字符
晕死,居然是有一个看不见的非法字符,将报错行周围的空白都删去就好了
https://blog.csdn.net/pijiuxiaolongxia/article/details/90145731
abs函数在C语言中包含在 stdlib.h 头文件中,在C++中包含在 cmath 头文件中
如果用的头文件是 cmath 并且像下面这么写,就会报错
res = abs(a - b) % 2; //报错
解决方法:
方法一:用一个变量来接收 abs(a-b)
d = abs(a - b);
res = d % 2;
方法二:改用 stdlib.h 头文件
#include <stdlib.h>
感谢疾风大佬的补充声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。