当前位置:  开发笔记 > 编程语言 > 正文

如何解决重复的符号错误?

如何解决《如何解决重复的符号错误?》经验,为你挑选了1个好方法。

我正在编译2个C++文件.4如果包含头文件.问题是,当链接器尝试将文件链接在一起时,我不断收到"重复符号"错误.

这是我的文件.


main.h

int test2();

main.cc

#include "main.h"
#include "test.h"

int test2(int test) {
    return 0;
}

int main() {

    test2(test());
    return 0;
}

test.h

int hello = 10;
int test();

test.cc

#include 
#include "test.h"
using namespace std;

int test() {
  cout << hello << endl;
  return 0;
}

我想我做的事情很简单.有人可以指出我做错了什么.这是我编译文件的方式.

c++ main.cc test.cc -o main

这是我得到的错误:

duplicate symbol _hello in:
/var/folders/nj/568_95bj4dg9v11l_mksv_2m0000gn/T/main-3becdd.o
/var/folders/nj/568_95bj4dg9v11l_mksv_2m0000gn/T/test-e84473.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Igor Tandetn.. 9

在头文件中,声明变量:

extern int hello;

在一个源文件中,定义变量:

int hello = 10;

不要在头文件中定义变量 - 这相当于在包含头文件的每个源文件中定义它们,这就是导致链接器错误的原因.



1> Igor Tandetn..:

在头文件中,声明变量:

extern int hello;

在一个源文件中,定义变量:

int hello = 10;

不要在头文件中定义变量 - 这相当于在包含头文件的每个源文件中定义它们,这就是导致链接器错误的原因.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有