编译器问题总汇

大憨熊 提交于 2020-01-26 06:42:19

编译器问题总汇

vs2019

不能用scanf

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

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

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

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

vs2010

配置方法

调试状态下没有memory窗口

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 标准了。

显示所有警告(-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。

产生调试信息(-g3)

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

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!