【发布时间】:2012-09-27 22:14:58
【问题描述】:
我遇到了这个问题,通常你们都会问我为什么,所以我先解释一下,这样你就可以回答我了,我正在研究一个至少有 500.000 行的源,但现在是我的一个源(.cpp) 文件我刚刚创建的文件不能添加预编译头文件,在这种情况下,我必须 NOT 编辑项目预编译头文件设置,显然如果我尝试编译我的在新文件中不包含 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 包含,因为有数千个其他文件使用它,如何处理?
【问题讨论】:
-
如果你真正的头部守卫是这样的,你可能想看看这个:stackoverflow.com/questions/228783/…
-
预编译的标头只有在每个翻译单元中都相同时才有意义。只是在需要#ifdef 时不要使用它们,它不会起作用。编译器实际上会跳过你的#define 来蹭你的鼻子。
-
为
to rub your nose into it+1 -
"我不能编辑项目预编译头设置"我想开车,但我不能开车,我该怎么做
-
你说得对,阿尔夫,这似乎根本不可能