我想更改main函数中的g
值。然后使用func()
。func()
将根据g
值计算值。如果g
更改func()
的结果将更改。
我写了一些代码,但是编译器给出了错误,有人可以帮我解决这个问题吗?
的main.cpp
TEST.CPP
错误
答案 0 :(得分:3)
由于你的错误#include "test.cpp"
,函数func
被编译在多个编译单元中。
链接器会反对。
通常,您只使用#include
包含头文件。
答案 1 :(得分:1)
问题在于你的main.cpp。由于预处理器,您不应该包含.cpp文件:
test.cpp的内容被复制到main.cpp文件的顶部。因此,当你的编译器紧随其后,它将在你的main.cpp和test.cpp中声明void func(),由多个定义的符号产生。
删除#include“test.cpp”,添加对'void func();'的extern引用在main.cpp中或在test.h头文件中声明原型。
答案 2 :(得分:1)
您不得包含test.cpp。
否则会被编译两次。
当链接发生时,它告诉函数存在两次
答案是:
放入func的原型:
// It is a prototype, no implementation but a ;
void func();
test.h
main.cpp
醇>
#include "test.h"
此致