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.";
}
所以我刚刚开始掌握 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.";
}