Visual Studio 2017根据最终级别Const更改名称混乱

时间:2018-11-22 02:36:44

标签: c++ visual-studio visual-studio-2017 name-mangling

我有两个C ++文件试图导出/使用如下函数:

// A.cpp
void aFunc(char const *const aArg) {
}

// B.cpp
extern void aFunc(char const *);

void bFunc() {
    aFunc("test");
}

当我尝试编译并链接以上代码时,出现链接器错误,指示aFunc是一个未解决的外部文件。但是,如果我将 A.cpp 修改为以下内容:

// A.cpp
void aFunc(char const *);
void aFunc(char const *const aArg) {
}

然后一切都会按预期进行编译。有人可以解释为什么将声明添加到 A.cpp 会更改导出的aFunc整齐的名称吗?我的期望是,aFunc的整齐的名称在两种情况下都是相同的,因为最终级别const不会影响界面。

0 个答案:

没有答案