2

我刚刚inline微软网站上研究了 C++ 关键字的使用和好处/缺陷,我了解所有这些。

我的问题是:如果编译器评估函数以查看内联它们是否会导致代码更高效并且inline关键字只是编译器的一个建议,那么为什么要使用关键字呢?

编辑:很多人都在抱怨我使用 of__inline而不是inline. 我想指出的__inline是微软特有的:所以这并没有错,只是不一定是你习惯的。(还修复了网站链接)

EDIT2:重新格式化问题以指示inline关键字(在所有 C++ 中使用)而不是 Microsoft 特定的__inline关键字。

4

3 回答 3

8

首先,它不是__inline,而是inline

其次,inline不可否认,单一定义规则的影响是显着的。它允许您多次定义函数并让编译器处理它。

第三,关于实际的内联,这是你表达你对该函数的看法的方式,不仅向编译器而且向那些以后可能阅读你的代码的人。在许多情况下,这是一种发泄情绪的方式,可以这么说。基本上,这是您告诉他人和您自己的一种方式:“我觉得这个函数太小(或太专业),无法证明调用开销是合理的,所以不要让我为这种讽刺负责。我做了我所做的一切可以。如果不是因为你愚蠢的公司范围内的编码标准,我会把它变成一个宏”。在这方面,它是一种形式化的评论

第四,看到您使用了关键字的特定于实现的拼写,我注意到一些实现为您提供了替代关键字,让您有机会更多......呃......说服您希望内联该功能. 在 MS 编译器中,这将是__forceinline.

于 2013-06-26T16:49:01.603 回答
2

关键字 isinline和 not __inline

inline不仅仅是一个建议,它是在不违反单一定义规则的情况下在头文件中包含函数定义的最佳标准兼容方式。

于 2013-06-26T16:46:53.747 回答
0

MSDN中的文档来看,我认为这是一个纯粹实用的东西,主要是为了 C 程序的好处。

由于inline是 C 中的有效标识符名称,因此 C 中需要另一个关键字。

就个人而言,如果我的源代码最终可以在 C 和 C++ 程序之间共享(显然是在 Visual Studio 中),我只会考虑使用它。

于 2013-06-26T17:41:46.440 回答