【发布时间】:2023-03-28 13:16:01
【问题描述】:
链接器在此报告重复符号:
#ifndef testttt
#define testttt
void anything(){
std::cout<<"hellooooooo";
}
#endif
因为它在包含保护中,所以我希望这个函数只定义一次。但显然不是。
我知道我可以把 static 放在它前面,然后它就可以工作了(我仍然觉得很讽刺,因为 static 应该给它内部链接,但这个函数可以从多个 cpp 文件中使用) .
所以我想我的两部分问题是:1)为什么包含防护不会像对其他标题项那样阻止此函数的多个定义,以及 2)为什么 static 字在静态时解决这个问题应该防止名称在其他翻译单元中可见吗?我添加了它,我实际上可以从包含这个头文件的任何地方调用这个函数。
【问题讨论】:
-
fwiw,作为重复链接的问题实际上是在这个问题之后提出的,所以说它“已经”有一个,不太正确。
标签: c++