需要包含两次预编译头
Posted
技术标签:
【中文标题】需要包含两次预编译头【英文标题】:Need to include the precompile header twice 【发布时间】:2017-02-16 12:00:33 【问题描述】:我的应用程序运行正常,但我正在尝试清理一些东西。当我在源文件中包含预编译头文件时,会发生以下情况。
基本上第一行有下划线,好像它有问题一样,所以我必须在下面再次包含它,并使用正确的路径......但我需要两者,否则它不会编译。
有什么想法吗?
【问题讨论】:
你是说去掉第一个就不能编译?您能否将出现的错误的具体文本添加到问题中?另外,你知道***.com/a/26330290/4944425 吗? 预编译头文件必须只有一个,项目中的所有源文件都必须同意它是哪一个。非常高的几率,第一个根本没有被使用,并且你收到了关于它的警告,程序员由于某种原因经常看不到。通过告诉我们您所看到的来改进您的问题。 你可能有 2 个文件...一个在适当的位置用于预编译的头文件,另一个在其他地方有正确的内容。 嘿伙计们,我会在早上检查,只是为了清楚这两行都需要,否则无法编译。因此,我目前无法删除任何一个文件,我会仔细检查是否只有一个建议的文件,并在明天回复您。 一般以我的经验 (VS-) 预编译头文件是问题的根源——我很久以前就停止使用它们了。如果您确实需要加快编译速度,请尝试使用其他东西 - 例如IncrediBuild 等工具... . 【参考方案1】:Visual Studio 仅在名称匹配时才使用预编译标头(名称不区分大小写)。比方说,在你的项目中设置了一个预编译头名称StdAfx.h
,所以只有当代码包含#include "stdafx.h"
时才会使用预编译头。
#include "..\stdafx.h"
不被识别为预编译头,即使它是真实位置。
您需要将 stdafx.h 位置的包含路径添加到项目设置中,然后标题 #include "stdafx.h"
将正常工作。
预编译头文件的另一个常见问题是包含指令位于头文件中。它应该始终位于源文件 (.ccp) 中。
【讨论】:
你错了后者。#include
可以和其他头文件无缝使用。只需查看标准库标题即可查看。
检查的机会仍然不错,希望在一周内完成,但这听起来很有希望。谢谢。
@SemyonBurov,想象一下#include "stdafx.h"
在某个库的标题中。它在编译库时可以无缝工作,但是在编译使用该库的项目时,会使用项目中的预编译头文件。现在它不会编译,除非您的项目预编译头文件包含所有库需要。现在,它听起来并不无缝。
这行得通,由于某种原因,我不得不将项目的根目录作为包含目录包含在内,默认情况下它不是包含目录吗?无论如何,这样做后,问题就消失了。
对不起,如果我知道我必须按下那个图标,我会早点给予赏金!大声笑以上是关于需要包含两次预编译头的主要内容,如果未能解决你的问题,请参考以下文章