Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要为';内联';C++;? 我刚刚研究了C++关键字内联< /代码>的用法和优点,我理解了所有这些。_C++_Inline_Compiler Optimization - Fatal编程技术网

为什么要为';内联';C++;? 我刚刚研究了C++关键字内联< /代码>的用法和优点,我理解了所有这些。

为什么要为';内联';C++;? 我刚刚研究了C++关键字内联< /代码>的用法和优点,我理解了所有这些。,c++,inline,compiler-optimization,C++,Inline,Compiler Optimization,我的问题是:如果编译器计算函数,看看内联函数是否会提高代码的效率,而inline关键字只是对编译器的一个建议,那么为什么还要麻烦使用关键字呢 编辑:很多人抱怨我使用了\u inline而不是inline。我想指出的是,\uu inline是微软特有的一款:所以它没有错,只是不一定是你所习惯的。(还修复了网站链接) 编辑2:重新设置问题格式,以指示内联关键字(在所有C++中使用),而不是Microsoft特定的\uuuu内联关键字。关键字是内联,而不是\uuu内联 inline不仅仅是建议,它是在

我的问题是:如果编译器计算函数,看看内联函数是否会提高代码的效率,而
inline
关键字只是对编译器的一个建议,那么为什么还要麻烦使用关键字呢

编辑:很多人抱怨我使用了
\u inline
而不是
inline
。我想指出的是,
\uu inline
是微软特有的一款:所以它没有错,只是不一定是你所习惯的。(还修复了网站链接)


编辑2:重新设置问题格式,以指示
内联
关键字(在所有C++中使用),而不是Microsoft特定的
\uuuu内联
关键字。

关键字是
内联
,而不是
\uuu内联


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

首先,它不是
\uu inline
,而是
inline

其次,
inline
在一个定义规则中所起的作用是不可否认的。它允许您多次定义函数,并让编译器来处理它

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


第四,看到您使用了特定于实现的关键字拼写,我注意到一些实现为您提供了替代关键字,让您有机会更。。。呃。。。在你想要内联这个功能的愿望中是有说服力的。在MS编译器中,这将是
\uu forceinline

从中的文档判断,我认为这是一件纯粹实用的事情,主要是为了C程序的好处

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


P>个人,如果我的源码最终可以在C和C++程序之间共享(显然是VisualStudio),我只考虑使用它。

我知道代码< >我个人的偏好是将所有函数定义放在.cpp文件中,而不是将一些函数定义放在.h文件中,这样看起来更整洁。但是谢谢你为我解释要点(我知道其他人有不同的偏好)。@Edward你不能从头文件中获得所有函数定义。对于模板,函数定义必须在模板实例化点可用。类似地,如果希望使编译器能够通过内联函数调用来优化函数调用,则函数定义必须可用于调用这些函数的每个编译单元。标题不应该是“为什么要在Visual Studio中使用_inline关键字?”“爱德华:他们在抱怨,因为你写了代码>为什么在C++中麻烦了?他们不会让你写代码>为什么要在VC++中使用“Y-In”关键字,也就是说,微软编译器实现C++语言标准而不是C++语言标准。