virtualStudio-doc-错误

stdafx.h

在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “stdafx.h”?

错误分析

此错误发生的原因是编译器在寻找预编译指示头文件(默认#include “stdafx.h”)时,文件未预期结束。没有找到预编译指示信息的头文件”stdafx.h”。
(因为工程中的每个cpp文件属性默认都是使用预编译头(/YU)的,但是添加的第三方文件并没有 #include “stdafx.h” 预编译指示头,所以编译器在此cpp文件中一直到末尾都没有找到它)
我的这个问题发生于我通过添加文件的方式,向MFC内添加现有的一大坨.h和.cpp文件。这些.h和.cpp文件是属于标准C++的开源源代码范畴,与MFC无更深层次的关系。此错误发生的原因是编译器在寻找预编译指示头文件(默认#include “stdafx.h”)时,文件未预期结束。没有找到预编译指示信息的头文件”stdafx.h”。

解决方法

1) 在解决方案资源管理器中的工程,右击相应的.cpp文件,点击“属性”
2) 在左侧配置属性中,点开“C/C++”,单击“预编译头”
3) 更改右侧第一行的“创建/使用预编译头”,把选项从“使用预编译头(/Yu)”改成“不使用预编译头”
4) 注:每一个报错的.cpp都要如此更改哦辛苦一下呗

关闭预处理头

关闭预处理头
  • 二.(不推荐)

1)在解决方案右击工程,点击属性
2)在配置属性 -> c/c++ -> 预编译头 中 将 “使用预编译头(/YU)” 改为 “不适用预编译头”
这种做法会使每次编译过程非常缓慢

  • 备注:

1) 貌似也可以直接在.cpp头文件上include stdafx.h。但没尝试如此修改,因为不想破坏源代码的标准性^^
2) 感慨一下VC在识别、编译这方面的迟滞-
-,或许是因为太强大了吧,就没考虑周全,竟然还需要手动修改~
3) 有点怀念Qt了……一.

unsafe

This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

解决方法

1、在工程文件名处右击鼠标打开快捷菜单,找到“属性”选项,进入项目属性页面

打开属性

打开属性

2、在属性页面中找到“C/C++”——”预处理器“,按下图操作单击箭头指向处的按钮

进入预处理

进入预处理

3、在下面的编辑窗口中添加一句命令:_CRT_SECURE_NO_WARNINGS添加完成后应用并退出

添加命令

添加命令

pch.h

当然你可以不使用这个头文件,右键你的工作——>属性——>配置属性——>C/C++——>预编译头——>预编译头右边选择不使用预编译头,然后按确定,这时你有加pch.h也不会报错。