我最近一直在学习有关标题,翻译单元和预编译标题的更多信息。我想我现在很了解他们。我确实有几个问题,我在这里问一个问题。这只是一个理论上的例子,所以它可能会或可能不会在实践中发挥作用,但请尝试理解我在问什么。
假设我有一个预编译的标题,如下所示:
// 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对我的理解不起作用。
唯一想到的解决方案是创建一个单独的源文件,并将其标记为不使用预编译头文件。我想了解任何替代方案。
此外,为了未来的努力和搜索引擎结果,表达我所要求的更为通用的方式是什么?