【问题标题】:My first multi-file C++ Program Keeps Giving Me Error Messages我的第一个多文件 C++ 程序不断给我错误消息
【发布时间】:2014-06-20 02:32:36
【问题描述】:

添加.cpp

int add(int x, int y)
{
    return x + y;
}

Main.cpp

#include <iostream>

int main()
{
    using namespace std;
    cout << "The sum of 3 and 4 is: " << add(3, 4) << endl;
    return 0;
}

当我尝试编译此程序时,我收到一条关于 main.cpp 第 6 行的错误消息,指出:“错误:'add' 未在此范围内声明”。

【问题讨论】:

  • 您究竟是如何包含 add.cpp 的?
  • Add.cppMain.cpp 中添加包含int add(int x, int y);#include "Add.hpp" 的第三个文件Add.hpp
  • 请注意,您可以包含 .cpp 文件,但您不应该这样做,因为它会在其包含的每个文件中插入重复的函数定义

标签: c++ file function scope


【解决方案1】:

创建头文件

内容:

    int add(int x, y);

包含该文件 main.cpp

即#include "headerfile.h"

剩下的就看编译环境了。基本上需要将每个.cpp 编译为目标代码,然后链接它们。您需要阅读有关此内容的信息,因为这因环境而异。还阅读了 header 保护以及 graadle、SCONS、Makefiles 之类的东西。也很高兴了解版本控制系统,例如水银。

猜你会很忙

【讨论】:

    【解决方案2】:

    您需要Add.h 文件并将其包含在您的Main.cpp

    添加.h

    int add(int x, int y);
    

    Main.cpp

    #include <iostream>
    #include "Add.h"
    
    ...
    

    【讨论】:

      【解决方案3】:

      在 c++ 中,作用域是所有可见的函数/方法和变量。为了在本例的范围内看到它,您必须创建一个包含您的方法“add”的头文件。一种方法是不要将它放在 .cpp 文件中,而是将其放在 .h 文件中,然后像这样在 main.cpp 文件中包含该 .h 文件

      #include "Add.h"
      

      【讨论】:

      • 由于单一定义规则,将定义按原样放在标题中是一个坏主意。
      • 我明白这一点,但这是他们第一个多文件 C++ 项目,所以我想尽可能简单。
      • 谢谢大家,我修复了标题,现在看起来一切都很好。唯一的问题是,在 main.cpp 的第 6 行,我收到错误“'main' 的多个定义”,并且在第 5 行“首先在这里定义”(我猜这也必须与 main 有关。我应该怎么做怎么办?提前谢谢你们,你们都很棒。
      猜你喜欢
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多