【发布时间】:2021-03-11 03:43:33
【问题描述】:
我在尝试编译时遇到多个全局变量定义错误:
/usr/bin/ld: ../grpc/server.o:(.bss+0x0): multiple definition of `TABLET[abi:cxx11]'; backend_server.o:(.bss+0x0): first defined here
/usr/bin/ld: ../grpc/server.o:(.data+0x0): multiple definition of `VB'; backend_server.o:(.data+0x0): first defined here
/usr/bin/ld: file_reader_functions/password_reader.o:(.bss+0x0): multiple definition of `TABLET[abi:cxx11]'; backend_server.o:(.bss+0x0): first defined here
/usr/bin/ld: file_reader_functions/password_reader.o:(.data+0x0): multiple definition of `VB'; backend_server.o:(.data+0x0): first defined here
/usr/bin/ld: file_reader_functions/file_writer.o:(.bss+0x0): multiple definition of `TABLET[abi:cxx11]'; backend_server.o:(.bss+0x0): first defined here
/usr/bin/ld: file_reader_functions/file_writer.o:(.data+0x0): multiple definition of `VB'; backend_server.o:(.data+0x0): first defined here
我在 backend/globals.h 中定义了我的全局变量:
#pragma once
#include <unordered_map>
#include <string>
using namespace std;
unordered_map<string, unordered_map<string, char*>> TABLET;
bool VB = true; // Verbose
然后在我使用这些全局变量的每个文件中,我只需包含这个 globals.h 文件。
我 100% 确定我没有在其他任何地方重新定义全局变量,也没有使用 extern。
我也尝试过使用老式的头卫:
#ifndef GLOBALS_H
#define GLOBALS_H
#include <unordered_map>
#include <string>
using namespace std;
unordered_map<string, unordered_map<string, char*>> TABLET;
bool VB = true; // Verbose
#endif
我遇到此问题的任何原因?
【问题讨论】:
-
C 在哪里?
标签: c++ header-files