VS2012对C++头文件检查不严格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2012对C++头文件检查不严格相关的知识,希望对你有一定的参考价值。

很多库函数没写头文件照样编译,要怎么修改设置呢

    首先,我没遇到过你说的这种情况,你能否举例看看

    其次,你是否是用一个头文件,但却用了另一个头文件才有的函数?很多头文件都包含了其他的头文件,你可以打开那个头文件查看下就知道了。

    比如VS2012的预编译头文件stdafx.h就是这样定义的:

    // stdafx.h : 标准系统包含文件的包含文件,
    // 或是经常使用但不常更改的
    // 特定于项目的包含文件
    //
    #pragma once
     
    #include "targetver.h"
     
    #include <stdio.h>
    #include <tchar.h>
     
    // TODO: 在此处引用程序需要的其他头文件

参考技术A 你包含的头文件中也包含了别的头文件。
要不然微软是吃白饭的啊?

VS 总是寻找预编译的头文件

【中文标题】VS 总是寻找预编译的头文件【英文标题】:VS Always looks for precompiled headers 【发布时间】:2018-02-22 10:03:23 【问题描述】:

我正在使用 VS Community 2015 创建 C++ 控制台应用程序

我正在尝试停止使用预编译的标头。

我已删除 #include "stdafx.h" 以及 stdafx .h 和 cpp 文件。

在我选择的项目属性页面中

不使用预编译头文件

我尝试过清理、重建,但没有任何效果。

VS 一直在寻找预编译的头文件:

1>ConsoleApplication2.cpp(7):致命错误 C1010:意外结束 文件同时寻找预编译的头文件。您是否忘记添加 '#include "stdafx.h"' 到您的来源?

谁有解决办法?

【问题讨论】:

【参考方案1】:

可以在单个源文件级别覆盖 VS 项目属性。检查 ConsoleApplication2.cpp 的属性(以及其他出现错误的源文件)并确保它们的 PCH 相关属性未加粗,即它们处于“从父级或项目默认值继承”状态。

还要确保您正在编辑您实际构建的配置(例如“调试”)的属性。 VS 属性对话框允许您编辑任何配置的属性,而不仅仅是解决方案范围配置组合中当前选择的属性。我通常做的是在退出之前总是将对话框的配置设置为“活动”选项,这样当我打开它时,我就不必检查了。

【讨论】:

以上是关于VS2012对C++头文件检查不严格的主要内容,如果未能解决你的问题,请参考以下文章

多个错误,在VS2017的头文件中,opengl项目C++

用vs2015写c++,编译报错项目已过期,怎么回事?

VS c++2005中头文件有的为啥必须加.h比如malloc

VS2005 MFC 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

cmake在检查头文件时使用corrext c++标准

vscode下运行c++找不到头文件是怎么回事