gpt4 book ai didi

c++ - VS 2008 - 标题的某些部分不包括在内?

转载 作者:行者123 更新时间:2023-11-28 08:20:17 25 4
gpt4 key购买 nike

我在 Visual Studio 2008 下工作,也许这很重要。在一个更大的项目中,我决定将我的一个 .cpp 文件分成两个。当我将一些函数移动到一个新文件时,我们将其命名为 new.cpp , 并尝试编译,我得到了 new.cpp 的错误不知道 fstreams 的定义, setw()等等。现在,在新文件的最顶部,我包含了我自己的标题,我们称之为 main_header.h ,这又包括所有必要的 <iostream> , <iomanip>等。这在该项目中使用的所有旧文件中都可以正常工作,但由于某种原因在 new.cpp 中没有。 .

如果我添加

#include <fstream>
#include <iomanip>
// and all the rest

new.cpp然后一切正常,但这不是我想要解决它的方式。我想可能是 main_header.h 的内容不会附加到 new.cpp关于编译,但事实并非如此,我尝试在 new.cpp 中使用在 main_header.h 中声明的外部变量并在不同的 .cpp 中定义,并且在编译、链接或运行时没有出现错误。然而它看起来像<fstream><iomanip>包含在 main_header.h 中不要到new.cpp文件。

我对 Visual Studio 比较陌生,所以我的问题的解决方案可能很愚蠢,我不知道,但我花了很多时间试图弄清楚这个问题,但无济于事。新文件绝对是项目的一部分,因为构建项目会尝试编译它,加上一旦我包含 iostreamiomanip在这个new.cpp我可以在项目的其他部分调用它的例程。知道我可能做错了什么吗?

main_header.h看起来像这样

#ifndef MAIN_HEADER
#define MAIN_HEADER

#include <iomanip>
#include <fstream>
// loads of other stuff

#endif // for MAIN_HEADER



更新:好的,所以在我使用相同文件创建一个全新项目并且现在一切正常后的第二天,我不需要包含 iomanip也不是 new.cpp 中的任何其他内容。这确实与 VS 的一些奇怪问题有关,而不是代码本身,但我仍然想不通到底是什么问题。

最佳答案

这可能是由前缀 header 或预编译 header 引起的,它们可以在整个项目中设置,也可以只在您的 new.cpp 文件中设置,这或许可以解释为什么存在一些差异。这里有一些尝试:

  • 属性 -> C++ -> 预编译 header :检查整个项目和单个文件的设置
  • Properties -> C++ -> Advanced -> Force includes:检查两者是否相同
  • 在文本编辑器中打开 vcproj 文件并找到 new.cpp 节点——这是一种快速查找此单个文件是否具有不同编译器设置的方法
  • Properties -> C++ -> Preprocessor -> Generate Preprocessed file:这将生成一个中间 new.i 文件,其中包含所有 #includes 和已解析的宏。比较这两个文件的结果并寻找差异——这可能会显示为什么一个有效而另一个无效

关于c++ - VS 2008 - 标题的某些部分不包括在内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6041308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com