C++ Headers & 未定义参考

C++ Headers & Undefined Reference

所以我刚刚开始掌握 C++ 并继续使用 header 文件。事情是,我完全糊涂了。我已经阅读了一份文档,但 none 使我对它的理解足够透彻。

我只是在制作一个愚蠢的 'game',它是交互式的,它可能会被丢弃,我认为我可以在 header 文件上练习使用。这是我的文件结构:

   terminal_test
    ├── core.cpp
    └── game
        ├── game.cpp
        └── game.h

现在,这是我的 core.cpp:

#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include "game/game.h"

using namespace std;

void mainMenu();
void rootInterface() {

  cout << "root@system:~# ";

}

int main() {

  system("clear");
  usleep(2000);

  mainMenu();

  return 0;

}

void mainMenu() {

  int menuChoice = 0;

  cout << "[1] - Start Game";
  cout << "[2] - How To Play";
  cout << endl;

  rootInterface();
  cin >> menuChoice;

  if ( menuChoice == 1 ) {

      startGame();

  } else if ( menuChoice == 2 ) {

      cout << "This worked."; 

  }
}

其他一切正常,但 startGame(); 在我的菜单选项下。当我使用 g++ core.cpp game/game.cpp 编译时,它会返回此错误:undefined reference to startGame();。我首先做了一些故障排除,看看它是否通过将 #include "game/game.h" 更改为 #include "game.h" 之类的东西来正确找到 game.h 而没有列出里面的目录,它给了我一个 game.h could not被发现所以我知道它正在识别它,只是根本没有编译。

这是我的 game.h:

#ifndef GAME_H // Making sure not to include the header multiple times
#define GAME_H
#include "game.h"

void startGame();

#endif

game.cpp:

#include <iostream>
#include <stdio.h>
#include "game.h"

int main(int argc, char const *argv[]) {

  void startGame() {

    cout << "It worked.";

  }

  return 0;
}

我的文件结构也没有正确命名,我只是把它扔进去,因为它只是为了掌握 C++ 中的 header 文件。

所以,这是我的问题:

1) - 这个错误具体说明了什么,我应该怎么做才能修复它?

2) - header 文件如何与其他文件通信和工作,是否有明确的 documentation/guides 可以提供帮助?

局部函数定义不是您想要的:

#include <iostream>
#include <stdio.h>
#include "game.h"

int main(int argc, char const *argv[]) {

  // an attempt to define startGame() inside of main()
  void startGame() {

    cout << "It worked.";

  }

  return 0;
}

main 在您的 game.cpp 文件中不需要。你应该在 main 之外定义 startGame(),像这样:

#include <iostream>
#include <stdio.h>
#include "game.h"

// definition of startGame
void startGame() {

  cout << "It worked.";

}