编译器问题

编译器问题

vs2019

不能用scanf

使用VS会出现’scanf’: This function or variable may be unsafe. Consider using scanf_s
ins这种错误,这是新版vc库添加的警告因为微软认为scanf的使用存在安全隐患,因为C/C++中的字符串处理都是以\0为截止符的,如果搜索不到\0,容易出现字符串越界所有vc扩展的所谓安全标准库,都添加了一个参数用以指定字符串参数的长度,用以避免这种安全隐患。

解决方法:打开“项目”下的“ConsoleApplication1属性” 页面

1.png

点击配置属性—>c/c++—>预处理器

2.png

在预处理器定义那里添加一行==_CRT_SECURE_NO_DEPRECATE==即可

3.png

vs2010

配置方法

  1. QQ图片20191221171039.jpg
  2. Snipaste_2019-12-21_17-09-22.png Snipaste_2019-12-21_17-09-43.png Snipaste_2019-12-21_17-09-59.png

调试状态下没有memory窗口

QQ图片20191221171650.jpg

dev-cpp

运行闪退

代码示例

#include<stdio.h>
int main ()
{
    printf("hello world");
}

改动

#include<stdio.h>
int main ()
{
    printf("hello world");
    getchar();//getche();也可
}

c99标准设定(-std)

依次到【工具】-【编译选项】-【代码生成 / 优化】-【代码生成】。在【语言标准】中选择 “ISO C99” ,此后在编译的时候就可以使用 C99 或 C++ 11 标准了。

4.png

显示所有警告(-wall)

有个笑话:路尽头悬崖边上竖了块牌子写着 “Warn­ing”,结果程序员全部掉了下去。

Warn­ing 与 Er­ror 不同,程序遇到 Er­ror 就不能正常运行了(甚至都不能通过编译),而 Warn­ing 是说明你的程序有不严谨的地方。新手程序员们应该认真对待 Warn­ing,从而提升代码质量。

在 Dev C++ 中开启显示所有警告的方法如下:【工具】-【编译选项】-【代码生成 / 优化】-【代码生成】,在【代码警告】中将 “显示最多警告信息 (-Wall)” 设置为 Yes 即可。

上述设置其实是在编译时加入了 -Wall 参数。Wall 不是墙的意思,而是 Warn­ing all,即显示所有警告。开启了 Wall 之后,在某种意义上你应该像对待 Er­ror 那样对待 Warn­ing。

5.png

产生调试信息(-g3)

有些版本的 Dev C++ 在刚刚安装完成后默认情况下是不能进行调试的,一旦点击调试按钮,会提示 “没有调试信息”,随后程序崩溃或闪退。

这是因为在编译源代码的时候没有加入调试信息。解决方法如下:【工具】-【编译选项】-【代码生成 / 优化】-【代码生成】,在【连接器】中将 “产生调试信息” 设置为 Yes。

只有产生了调试信息才能对程序进行断点调试。(f5)

6.png
发布了2 篇原创文章 · 获赞 8 · 访问量 501

猜你喜欢

转载自blog.csdn.net/mer_cer/article/details/104240396