Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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 - Fatal编程技术网

C++ 在方法定义中使用内联关键字是否会导致错误?

C++ 在方法定义中使用内联关键字是否会导致错误?,c++,c,C++,C,我在我的程序(算法的实现)中的每个方法中都使用了内联,它会产生问题吗?它可能会使编译后的输出更大,运行更慢,假设编译器不够聪明,不会忽略它。通常,如果您有特定的目的,您应该只使用优化关键字,如“register”或“inline”——在这种情况下,您知道一些编译器不知道的有用内容 在现代CPU上,内联通常是一种悲观主义,而不是优化。这是因为函数的每个副本都必须从内存中提取,对其指令进行解码,并在各种缓存中使用自己的空间,特别是分支预测缓存。取决于代码的外观 但是不理解代码的含义?这肯定会给你带来

我在我的程序(算法的实现)中的每个方法中都使用了内联,它会产生问题吗?

它可能会使编译后的输出更大,运行更慢,假设编译器不够聪明,不会忽略它。通常,如果您有特定的目的,您应该只使用优化关键字,如“register”或“inline”——在这种情况下,您知道一些编译器不知道的有用内容


在现代CPU上,内联通常是一种悲观主义,而不是优化。这是因为函数的每个副本都必须从内存中提取,对其指令进行解码,并在各种缓存中使用自己的空间,特别是分支预测缓存。

取决于代码的外观

但是不理解代码的含义?这肯定会给你带来麻烦

为什么不试着去了解
inline
实际上做了什么,而不仅仅是它是否会引起任何问题

<> C++中的<>代码>内联关键字的主要作用是使编译器抑制ODR(一个定义规则)。因此,非内联函数必须在一个翻译单元中定义

内联
函数必须在使用它的每个翻译中定义


因此,根据函数的定义方式和位置,
inline
可能正确,也可能不正确。我建议您在使用正确的地方使用它。

-1,内联函数使分支预测和缓存更加高效,因为函数位于调用它的位置,而不是代码部分的其他位置。跳转位置是导致缓存丢失的原因。@pezcode:嗯?跳转如何产生缓存未命中?跳跃是100%可预测的。如果该函数最近从其他地方调用,那么它在缓存中将是热的。