常见问题解决方案目录

前言:您可以使用浏览器的查找功能,输入关键词,以方便快捷的检索。

 

Q1:Dev编译器不支持C++11特性(stoi、 to_string、unordered_map、 auto等)怎么办?

A1:让Dev C++支持C++11 - 再难也要坚持 DD- CSDN博客 https://blog.csdn.net/u011500062/article/details/44628441

 

Q2:VS2017中使用scanf()函数(已经添加#include<cstdio>)却出现安全性报错This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation,怎么办?

A2:解决VS2015中出现类似于error C4996: 'scanf': This function or variable may be unsafe的安全检查错误 - fupeirui - 博客园 https://www.cnblogs.com/everydaykeepgoing/p/6783137.html

a.在PAT(g++)中调试:直接用<cstdio>和scanf()就不会报error C4996

b.在VS2017中调试,scanf()会报error C4996。

方法一:最推荐:VS2017左边属性管理器中右键点你的项目文件->属性->C/C++->所有选项-.SDL检查->改为 否(/sdl-)

这样就可以成功生成解决方案了,虽然还是会有调试信息。

 

方法二:也可:在头文件声明部分加上一行#pragma warning(disable:4996)忽略报错

方法三:最不推荐:或者用scanf_s(),只适用于VS2017,在PAT中是不认可scanf_s的。这样的话在VS2017中用了大量的scanf_s()到PAT上再一个个改过来会很麻烦。

另外,相比VS2017,Dev-C++既不用加#include"stdafx.h",也不需要忽略C4996报错,并且也可以用<cstdio>和scanf()

 

Q3:编译器报错error: reference to 'xxx' is ambiguous怎么办?

A3:error: reference to 'left' is ambiguous - 点滴初学者的博客 - CSDN博客 https://blog.csdn.net/qq_36810403/article/details/75270503

因为这个变量名可能和导入的库文件中某个变量重名。修改xxx这个变量为其他名字就好了。通常max,left这样的变量容易出现重名问题。

如果要修改的变量出现次数较多,可以使用Dev-C++中的搜索-替换。推荐勾选“全字匹配”和“替换前提示”,PgUp快速移动光标到代码开头,勾选“向前”和“光标处开始”。“向前”指的是沿着代码编写的方向,也就是自上而下。

其他几个选项是默认的,通常影响不大。“区分大小写”和搜索区域“全部”/“选择的”则根据你的需要而定。

另外搜索到目标的弹窗提示替换的中文翻译有点问题,会写成类似 用max替换本次? 的形式,实际上是max被替换的意思。这个中文插件好像有语病。

 

Q4:Dev-C++报错提示三行信息:

.......cannot open output file xxx.exe: Permission denied

......[Error] ld returned 1 exit status

......recipe for target 'xxx.exe' failed

怎么办?

A4:意思是权限被拒绝。

最可能:你刚刚开(上一次编译运行)的黑窗程序没关,还在运行,这时修改代码重新编译运行就会报错。

次可能:电脑安全防护软件阻止了你对.exe文件的修改,可暂时关闭电脑安全防护软件。

 

Q5:Dev-C++如何执行断点调试?

A5:工具菜单配置编译选项后标红设置断点,按F5断点调试

Dev C++断点调试 - swordtraveller的博客 - CSDN博客 https://blog.csdn.net/swordtraveller/article/details/86595363

 

Q6: Jupyter Notebook切换路径?找不到.jupyter目录?

A6: 

jupyter更换路径 - 简书 https://www.jianshu.com/p/c68333956f5a

anaconda安装完找不到.jupyter目录 - u010100466的专栏 - CSDN博客 https://blog.csdn.net/u010100466/article/details/77543346

 

Q7: VS2010(二级考试IDE)按下绿色三角形按钮,程序运行出错或者运行完毕后闪退无法查看结果,怎么办?

A7: 请按Ctrl + F5,有Fn的机型可能需要按Ctrl + Fn + F5, 即可查看运行结果。

 

Q8: Dev GCC报错:prototype for '...某个函数' does not match in class '...',和错误candidate is 'xxx'一起出现,这是怎么回事?

A8: 声明和实现不匹配哦,看看是不是有声明里漏写了传参类型之类的情况吧!

 

Q9:编译通过,但运行时黑窗却显示如下信息:

terminate called after throwing an instance of 'std::regex_error'
  what():  regex_error

A9:是否在使用正则表达式?看看正则中的[[::]]是否误写成了{{::}}而引发错误。

 

Q10:使用了vector,编译也没有报错,但程序运行时为vector输入数据后程序就不能正常运行,这是怎么回事?代码是这样写的:

vector<int> v;
for (int i = 0; i < 10; i++) {
    cin >> v[i];
}

A10:写错了。为vector容器添加元素应使用push_back(),像这样:

vector<int> v;
for (int i = 0; i < 10; i++) {
    int temp;
    cin >> temp;
    v.push_back(temp);
}

 

Q11:请问迭代器rbegin()怎样迭代到rend()?是++还是--?

A11:rbegin()到rend() 的迭代方法和begin()到end()的迭代方法一样,都是++

.begin()和.end()属于iterator,而.rbegin()和.rend()属于reverse_iterator

for (vector<int>::reverse_iterator it = v.rbegin(); it != v.rend(); it++)
for (auto it = v.rbegin(); it != v.rend(); it++)

 

Q12:在使用Mysql-Navicat的软件组合时,新建查询后输入多条查询语句常会报错[Err] 1064,这是为什么?

A12:Mysql-Navicat中,多条语句之间要用分号;分隔。只有最后一条语句可不必以分号结尾(还是建议养成每条语句结尾都加分号的习惯)。看看是不是忘记了分号吧!

SELECT `姓名` FROM go;
SELECT `分数` FROM go
SELECT `姓名` FROM go;
SELECT `分数` FROM go;

以上两个例子中分号的使用是正确的,推荐后者。

 

Q13:在使用Mysql-Navicat的软件组合时,新建查询后输入查询语句中的``是怎么打出来的?像下图这样 姓名被一对`号包围:

SELECT `姓名` FROM go;

A13:这个`在大多典型布局的键盘上可以按下英文状态下的波浪线按键,就在数字1的左边,Tab键的上方。

 

Q14:C++报错:[Error] expected '}' before ';' token 怎么回事?为什么会缺少右花括号?

A14:有可能是int main后面的圆括号漏写了。是int main()不是int main,导致花括号匹配失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值