inline相关内容

内联函数链接器错误

我想使用特定类的内联成员函数。例如,没有内联的函数声明和实现如下: 在头文件中: int GetTplLSize(); .cpp文件中的 : int NeedleUSsim :: GetTplLSize() { return sampleDim [1]; } 由于某种原因,如果我将“inline”实现和声明,以及在这两个地方,我得到如 ..
发布时间:2016-10-14 12:10:01 C/C++开发

内联函数和静态内联函数之间的差异

任何人都可以告诉我内联函数和静态内联函数之间的区别是什么。 在这种情况下,与内联相比,我更喜欢静态内联? / p> 我问这个问题,因为我有一个内联函数,我面临的编译问题在链接期间(重定位错误:...符号已经抛弃与废弃的部分... )。我做了一个正常的功能,它的工作。 现在我的一些老年人告诉我尝试静态内联。 下面是我的函数: inline void wizSendNotifi ..
发布时间:2016-10-14 12:03:40 C/C++开发

为什么内联被认为比函数调用快?

现在,我知道这是因为没有调用函数的开销,但是调用一个函数的开销真的很重(并且值得膨胀的膨胀)。 从我可以记住,当一个函数被调用,说f(x,y),x和y被推到堆栈,并且堆栈指针跳转到一个空块,并开始执行。我知道这是一个过度简化,但我错过了什么?几个推和一个跳转调用一个函数,是真的有很多开销吗? 让我知道如果我忘记了什么,谢谢! 解决方案 p>除了没有呼叫(因此没有相关费用,如呼叫前 ..
发布时间:2016-10-14 11:53:35 C/C++开发

现代C ++编译器可以在cpp文件中定义内联函数

我知道关键字 inline 具有有用的属性。用于将模板特殊化保留在头文件中。 另一方面,我经常读到 inline 几乎没有用作编译器实际内联函数的提示。 此外,关键字不能在cpp文件中使用,因为编译器只要在调用 inline 关键字时检查标记的函数。 因此,我对现代编译器的“自动”内联功能(即gcc 4.43)有点困惑。当我在cpp中定义一个函数时,无论如何,如果它认为内联对函数有意义, ..
发布时间:2016-10-14 10:56:26 C/C++开发

内联定义和声明

在最近的同行评审期间,另一位软件工程师建议我声明 inline 函数 inline 定义(在类外部)以及在声明(在类内部)。他的论据是“通过标记它的内联,你说这个方法将比非内联方法执行得更快,调用者不必担心过多的方法调用。“ 这是真的吗?如果我是一个类的用户,我真的关心对方法的过多调用吗?在定义和声明中将它列为内联有什么问题吗? C ++常见问题说明: 最佳实践:只在类体外的定义。 ..
发布时间:2016-10-14 10:34:12 C/C++开发

R:使用内联包时的C ++优化标志

在R中,当使用内联包中的cxx函数时,如何更改cpp编译器的优化标志? 默认情况下,在我的机器上,它编译 -g -O2 。但我想使用 -O3 优化来获得速度。我使用 Rcpp 插件,如果这有什么区别。 我已经尝试创建自己的插件,尝试设置cxxfunction的不同参数,但没有什么工作。 我想一个选择是使用 R CMD SHLIB 而不是使用 cxxfunction 。但是Rcpp ..
发布时间:2016-10-14 10:25:00 C/C++开发

为什么不标记一切内联?

首先,我不是寻找一种强制编译器内联实现每个函数的方法。 为了减少错误的答案水平确保你明白 inline 关键字实际上意味着什么。这里是很好的描述, inline vs static vs extern 。 所以我的问题,为什么不标记每个函数定义 inline ?即理想情况下,唯一的编译单元是 main.cpp 。 这个奇数请求的理论是给予优化器要处理的最大信息。它可以内联函数实现 ..
发布时间:2016-10-13 12:18:57 C/C++开发

朋友和内联方法,有什么意义?

我在标题中看到,我没有写自己以下内容: 类MonitorObjectString:public MonitorObject { //一些其他声明 friend inline bool operator ==(MonitorObjectString& lhs,MonitorObjectString& rhs){return(lhs.fVal == rhs.fVal); } 我 ..
发布时间:2016-10-13 12:18:41 C/C++开发

不是C ++的内联完全可选吗?

我有一个类有一个内联成员,但我后来决定,我想从标题中删除实现,所以我将函数的成员体移出到一个cpp文件。起初,我只是在头文件中留下了内联签名(马虎),程序无法正确链接。 但是不是内联完全可选的 在代码中: 首先: // Class.h class MyClass { void inline foo() {} }; 下一页更改为(不会链接): ..
发布时间:2016-10-13 12:11:28 C/C++开发

是“内联”隐式在类定义中定义的C ++成员函数

根据C ++规范,以下两个类是否等同定义? class A { void f() { } }; class B { inline void f() { } }; 即,将“inline”限定符放在类定义中定义的成员函数中是否完全冗余? 关注问题:假设它是多余的,对于代码风格,保持“内联”标记是明智的,所以未来的开发人员意识到该函数应该 ..
发布时间:2016-10-13 11:35:28 C/C++开发

什么时候编译器内联C ++代码?

在C ++中,如果方法显式声明为 inline (或在头文件中定义),那么方法才会被内联,或者允许编译器允许内联方法? 解决方案 是的,即使编译器没有明确声明为 inline 。 基本上,只要语义不改变,编译器实际上可以做任何它想要的生成的代码。该标准不会对生成的代码强制执行任何特殊操作。 ..
发布时间:2016-10-13 10:36:13 C/C++开发

GCC内联C ++函数没有'inline'关键字?

GCC在编译C ++代码时,是否尝试通过选择未标记 inline 关键字的内联函数来优化速度? 解决方案 是的。任何编译器都可以随意内联任何函数,当它认为这是一个好主意。 在-O2优化级别,内联是在编译器认为值得做的时候完成的(使用启发式)和如果它不会增加代码的大小。在-O3,只要编译器认为它是值得做的,不管它是否会增加代码的大小。此外,在所有优化级别(启用优化)下,只调用一次的静态 ..
发布时间:2016-10-13 10:25:20 C/C++开发

什么是内联的目的?

我有一个讨论与 Johannes Schaub 关于 inline 的关键字。 代码有: 命名空间... { static void someFunction(){ MYCLASS :: GetInstance() - > someFunction(); } }; 他说: 将此作为内联函数可以 在可执行文件中保存代码大小 但根据我 ..
发布时间:2016-10-11 22:45:09 C/C++开发

.cpp文件中的C ++内联成员函数

我知道内联成员函数按照定义应该进入标题。但是如果不可能把函数的实现放到头中呢?让我们来看这种情况: 文件啊 #pragma once #include“Bh” A类{ B b; }; 文件Bh #pragma once A类; // forward declaration class B { inline A getA() ..
发布时间:2016-10-11 22:39:57 C/C++开发

内联函数链接

我不能理解以下行为:一个头包含一些基本类型,另一个头,其中我在几个函数中使用这些类型。之后,我开始根据我定义的类型和函数构建类。在函数头中如果我留下以下签名: void whateverFunction(parameters) 链接器指出,有多个definitionsFunction的定义。现在如果改为: inline void whateverFunction( ..
发布时间:2016-10-11 22:17:06 C/C++开发

使用内联关键字与模板有什么意义吗?

由于模板在头文件中定义,编译器能够确定内联函数是否有利,它是否有意义?我听说现代编译器知道更好的内联函数并且忽略 inline 提示。 编辑:我想接受这两个答案,但这是不可能的。要关闭此问题,我接受 phresnel 的答案,因为它获得了大多数投票,而且他是正式的,但正如我在评论中提到的,我认为 Puppy 问题是在C ++语义中,这是不严格的情况下 inline 关键字和内联。 ph ..
发布时间:2016-10-11 22:11:09 C/C++开发

我将如何知道是否在被调用的地方实际替换了内联函数?

但我怎么知道内联函数是否真的被替换为 解决方案 在运行时编程的时候,时间,你不能。 事实的真相是: 你不需要知道 编译器可以选择未标记为 inline 的 inline 函数, code> inline ,它完全是编译器的愿望(读取智慧)。你应该相信编译器会明智地做它的工作。大多数主流编译器会很好地完成他们的工作。 如果您的问题纯粹是从学术角度出发,那么有几个选项可供选择 ..
发布时间:2016-10-11 22:02:55 C/C++开发

为什么在头中有C ++内联函数?

NB 这不是关于如何使用内联函数或它们如何工作的问题,更多的是他们为什么按照它们的方式。 类成员函数的声明不需要定义 inline 的函数,它只是函数的实际实现。例如,在头文件中: struct foo { void bar ; //不需要将其定义为内联 } 在头文件中有一个类函数有?为什么我不能把内联函数的 .cpp 文件?如果我在哪里尝试把内联定义放在 .cp ..
发布时间:2016-10-11 21:16:02 C/C++开发