0

例如 <utility>,即使您没有明确键入, Visual Studio 也包含#include <utility>

是否有预处理器指令或某些选项仅包含程序员明确告知的内容?

只是一个假设的例子:

#include <vector>

int main()
{
    std::vector<int> x;
    std::move(x); // Did I ask for <utility> ? No I didn't
    return 0;
}
4

3 回答 3

4

<utility>除非其他包含的 std 标头需要,否则Visual Studio 不包含。

在 VS10 中,包括仅<vector>直接和间接地拉入另外 74 个标头。前往的路线<utility>是:

<vector>包括<memory>包括 包括<xmemory>包括 包括<xutility>包括<utility>

于 2012-04-28T01:16:08.723 回答
3

显然,对于您的编译器,当您包含时vector,该标头还包含包含的内容utility

Visual Studio 不会自动包含任何内容,因此这是您所描述内容的唯一解释。

于 2012-04-28T01:12:22.907 回答
1

当您包含<map>时,它在内部使用std::pair,因此包含<utility>。我猜如果那是你唯一的东西,我<vector>也会使用一些东西。<utility>#include

于 2012-04-28T01:15:49.037 回答