首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.cpp文件中具有相同类型但主体不同的内联函数

.cpp文件中具有相同类型但主体不同的内联函数
EN

Stack Overflow用户
提问于 2020-10-26 20:52:35
回答 1查看 64关注 0票数 2

这有点奇怪,也不是很实用,但我在cpp中尝试了一些随机的东西,我想试试这个:

代码语言:javascript
复制
 inline void foo(void){static int x=0; x++; cout << x << '\n'; return;};

在我得到的另一个.cpp文件中:

代码语言:javascript
复制
 inline void foo(void){static int x=0; x=x+2; cout << x << '\n'; return;};

现在,这是出于某种原因(相同的函数类型/名称),但它们的主体不同,它们都共享相同的'x',但它们的定义不同。我希望编译器会抱怨,但事实并非如此。为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2020-10-26 20:59:10

你正在陷入一种不确定的行为中。

编译器不会说任何话,因为:

每个程序应该只包含一个定义,每个非内联函数或变量在该程序中使用的odr-被丢弃的语句之外;不需要诊断。该定义可以显式地出现在程序中,它可以在标准或用户定义库中找到,或者(在适当的时候)它是隐式定义的(参见class.ctor、class.dtor和class.copy)。内联函数或变量应在其odr使用的每个翻译单元中定义,在被丢弃的语句之外。

有关该here的更多详细信息,请参阅cppreference site

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64537486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档