使用不同的#defines重新包含标头

时间:2016-05-31 13:29:30

标签: c++ header include precompiled-headers

我最近一直在学习有关标题,翻译单元和预编译标题的更多信息。我想我现在很了解他们。我确实有几个问题,我在这里问一个问题。这只是一个理论上的例子,所以它可能会或可能不会在实践中发挥作用,但请尝试理解我在问什么。

假设我有一个预编译的标题,如下所示:

// stdafx.h

#define WIN32_LEAN_AND_MEAN

#include <Windows.h>

和一些源文件。

// foo.cpp

#include "stdafx.h"

#include <Windows.h>

void bar()
{
    // I need to access something in Windows.h that requires
    // WIN32_LEAN_AND_MEAN to NOT be defined.
}

它不一定是预编译的头文件,但通常是任何类似的结构,但我不确定它是否适用。我可以很容易地解决Windows.h中的这个问题,但我确信还有更困难的情况。

无论如何都可以从预编译的头中删除当前包含的Windows.h并使用调整后的#defines重新包含它。 #undef对我的理解不起作用。

唯一想到的解决方案是创建一个单独的源文件,并将其标记为不使用预编译头文件。我想了解任何替代方案。

此外,为了未来的努力和搜索引擎结果,表达我所要求的更为通用的方式是什么?

0 个答案:

没有答案