关于学校古老的作业

本文旨在解决做作业中遇到的莫名其妙的错误。

本文包含VS和VC++6一些差别上的处理

 

1. 调用scanf()报错:

Severity Code Description Project File Line Suppression State
Error C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. HW_datastruct c:\users\yu\source\repos\hw_datastruct\hw_datastruct\main.cpp 39

如日志所述:这个函数不安全,请使用scanf_s代替。如果实在要使用,请使用 _CRT_SECURE_NO_WARNINGS 禁用该警告。

由于我们只是做作业,所以直接禁用是最好的。由于使用了#define预处理指令,所以这个禁用语句不会使 不支持该语句的编译器 报错,如gcc MSVC6++内置的cl编译器

解决方案:在文件最顶部使用

#define _CRT_SECURE_NO_WARNINGS

禁用该警告。

 

 

 

 

2. 关于#include "sqlist.cpp"

首先,引号表示优先在当前目录搜索

所以:把sqlist.cpp放在同目录下,再打开含main()的cpp源文件  【此时IDE会自动检测并添加sqlist.cpp到依赖里】

如果已经把sqlist添加到了源文件而非依赖区,右击改文件——从项目排除

 

 VS(VC++6) 通用,不会有LNK2005报错。

 

关于此处的LNK2005分析:应该是mian()中include了sqlist,正常情况下sqlist就不需要编译,但由于缺乏认知,我把sqlist添加到了 工程源文件Source Files(这个是会被IDE直接编译的)

所以导致了main编译完成后再编译sqlist,

而"main中include的部分" 是和main一起编译链接并生成main.exe的,所以才会提示main.obj里和sqlist冲突

 

posted @ 2019-03-13 15:38  蓝天上的云℡  阅读(288)  评论(0编辑  收藏  举报