gpt4 book ai didi

C++ : const declrations duplicate symbols issue

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:30 25 4
gpt4 key购买 nike

我想在我的代码中避免#defines。因此,我在头文件中有以下内容:

 #ifndef __GATENAMES__
#define __GATENAMES__

namespace GateNames
{
const char* CBSD_GATE_TO_SAS = "CbsdGate_SAS_INOUT";
const char* CBSD_GATE_TO_SAS_OUT = "CbsdGate_SAS_INOUT$o";
const char* CBSD_GATE_TO_SAS_IN = "CbsdGate_SAS_INOUT$i";
const char* SAS_GATE_TO_CBSD = "SasGate_CBSD_INOUT";
const char* SAS_GATE_TO_ESC = "SasGate_ESC_INOUT";
const char* SAS_GATE_TO_ESC_OUT = "SasGate_ESC_INOUT$o";
const char* SAS_GATE_TO_ESC_IN = "SasGate_ESC_INOUT$i";
};
#endif

此头文件包含在我的代码中的多个位置。但是,链接器提示符号被多重定义:

../out/gcc-debug/src/CbsdSim.o:(.data.rel.local+0x0): multiple definition of `GateNames::CBSD_GATE_TO_SAS'

我怎样才能解决这个问题?谢谢。

最佳答案

首先,像这样的名称 __GATENAMES__,(任何以下划线和大写字母开头或包含两个连续下划线的名称)是为 C++ 实现保留的——你不应该在你的代码中创建这样的名称自己的代码。

其次,你的constness有点困惑,而不是像这样:

const char*   CBSD_GATE_TO_SAS            = "CbsdGate_SAS_INOUT";

你想要:

 const char *  const CBSD_GATE_TO_SAS            = "CbsdGate_SAS_INOUT";

换句话说,指针必须是 const 才能限制指针的链接,而不是指向的东西(尽管在这种情况下也必须是 const)。

关于C++ : const declrations duplicate symbols issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com