2

我遇到了这个问题,通常你们都会问我为什么,所以我先解释一下,这样你就可以回答我了,我正在研究一个至少有 500.000 行的源,但现在是我的一个源(.cpp ) 我刚刚创建的文件不能添加预编译头文件,即“StdAfx.h”,在这种情况下,我不能编辑项目预编译头文件设置,显然如果我尝试编译我的项目而不在新文件中包含 stdafx 我'会被C1010砸碎,我试过的是这个

StdAfx.h:

#ifndef __ABC123
//do all your includes
#endif

我的文件.cpp:

#define __ABC123
#include "StdAfx.h"
#undef __ABC123

虽然这不起作用,但 stdafx.h 仍然包含这些文件。为什么我不能在此 .cpp 文件中包含 stdafx.h 是因为 stdafx 上的某些包含与此 cpp 的包含有大量冲突。我无法修改 stdafx 包含的内容,因为有数千个其他文件使用它,如何处理?

4

1 回答 1

2

不可能的。你把自己画到了这里的一个角落。让我解释一下。

PCH 旨在用于整个项目。每个翻译单元都应包括 PCH。

此行为可以被覆盖,但只能通过相关翻译单元的项目设置。您已经说过,您不能编辑项目设置,从而消除了您唯一的逃生途径。

如果您真的需要这个并且没有出路,我会考虑采取诸如将非 PCH 代码移动到自己的项目中这样的激烈步骤。

于 2012-09-27T22:53:35.010 回答