首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内联函数/方法

内联函数/方法
EN

Stack Overflow用户
提问于 2012-03-24 16:23:37
回答 3查看 314关注 0票数 3

语句:“内联函数必须在调用它们之前定义。”

这个说法正确吗?

编辑

问题最初是用德语提出的:

内联-Funktionen müssen vor ihrem Aufruf sein。

也许对任何人都有帮助..。

EN

回答 3

Stack Overflow用户

发布于 2012-03-24 16:26:36

是的,它是正确的,但只有partly.It才能正确地重新定义如下:

“内联函数必须在调用它们的每个https://stackoverflow.com/questions/1106149/what-is-a-translation-unit-in-c(但不一定在之前)中定义。”

C11++标准:§7.1.2.4

内联函数应在其使用的每个翻译单元中定义,并在每个case.Note中具有完全相同的定义:在转换单元中出现内联函数之前,可能会遇到对内联函数的调用。-end注记

,为什么是这样的理由?

当您以内联方式声明函数时,基本上是告诉编译器(如果可能的话)将函数调用的代码替换为函数的内容(只要函数被调用)。其思想是,函数体可能很小,调用函数比函数本身的调用开销更大。

要做到这一点,编译器需要在编译代码时看到定义,在代码中调用函数。通常,这是通过使用inline说明符在标头中添加函数的定义来完成的,然后在要调用函数的每个cpp文件中包含头文件。

票数 6
EN

Stack Overflow用户

发布于 2012-03-24 16:52:31

不是的。C++11草案n3242比7.1.2小节中的早期规范更清楚;

在每一个使用odr的翻译单元中,内联函数必须是defined,并且在每种情况下都应该具有完全相同的defined (3.2)。注释:在转换单元中出现内联函数definition之前,可能会遇到对其的调用。-尾注

票数 0
EN

Stack Overflow用户

发布于 2012-03-24 16:27:34

这个语句没有任何意义:不再调用内联的函数,代码就在当前函数中(它已被“内联”)。所以不,我会说是不对的。

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

https://stackoverflow.com/questions/9853318

复制
相关文章

相似问题

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