我知道之前已经有很多人问过这个问题,但是我还是遇到了麻烦。
我最开始只有一个包含所有代码的main.cpp
文件。就像这样:
int a = 0;
void foo() {
a+1;
}
void bar() {
a+2;
}
int main() {
foo();
bar();
a + 3;
}
现在我想将这段代码拆分成多个文件以便于管理。我想只有一个头文件
header.h
,和三个.cpp
文件:main.cpp
,foo.cpp
和bar.cpp
。目前,我的代码如下:
//header.h
int a = 0;
void foo();
void bar();
.
//foo.cpp
#include "header.h"
void foo() {a+1;}
.
//bar.cpp
#include "header.h"
void bar() {a+2;}
.
//main.cpp
#include "header.h"
int main() {
foo();
bar();
a + 3;
}
很不幸,链接器一直在抱怨我定义了多个
a
。我尝试使用#ifdef
,但那只能防止在同一文件中重新定义,对吗?我该如何解决这个问题?编辑:修改了问题,我刚意识到是变量被多次定义,而不是函数。
#define
将definitions
定义为int a = 0
,然后在我的main.cpp
文件中,在头文件之后立即引入了definitions
。这是正确的风格吗? - Draksisheader.h
文件中,这样当我添加一个新的全局变量时,我只需要在一个文件中添加它,而不必在两个文件之间来回切换。 - Draksis