inline相关内容

如何使用Rcpp和内联设置g ++编译器标志?

我想设置 -std = c ++ 0x ,使用Rcpp与内联。 R:使用内联包时的C ++优化标记,但是 我试过: $ b b settings = getPlugin(“Rcpp”) settings $ Makevars [length(settings $ Makevars)+1] =“CXXFLAGS = $(CXXFLAGS)-std = c ++ 0x“ fu ..
发布时间:2016-10-20 09:26:23 C/C++开发

关于C ++中内联函数的两个问题

我在C ++中编译内联函数时有问题。 可以使用inline的递归函数。如果是,那么请描述如何。 我相信循环不能使用它,但我已经读某处递归将工作,如果我们传递常量值。 我的朋友给我一些inline递归函数作为常量参数,并告诉我,这将工作,但不工作,我的笔记本电脑,在编译时没有错误,但在运行时显示没有,我必须终止它强制中断。 inline f(int n){ if(n r ..
发布时间:2016-10-19 20:59:45 C/C++开发

内联和dlimport / dllexport

现在我分析一些旧的代码,这不是我写的。在标头中有很多这样的声明: SVPDSDKDLLEXPORT inline C3vec mult(C3vec src,D3DXMATRIX& m); 如果在SVPDSDK中使用SVPDSDKDLLEXPORT,则定义为_declspec(dllexport) as _declspec(dllimport),如果它在任何项目中使用,它使用S ..
发布时间:2016-10-19 20:54:51 C/C++开发

类体外的模板定义

是吗?定义类模板的虚函数在其体外?虚函数不能被内联,但是为了避免编译单元中的多个定义,它们应该标记为 inline (假设模板头将被包括在多个源文件中)。另一方面,编译器可以忽略 inline ,所以这似乎有效。例如,下面的代码是正确的: template class C { public: virtual void f(T val); }; ..
发布时间:2016-10-19 20:08:56 C/C++开发

编译器内联函数有多深?

说我有一些函数,每个约两个简单的代码,并且他们这样调用: A 调用 B 调用 C 调用 D ...调用 K 。 (因此基本上是一系列长的函数调用。)编译器通常在调用树中如何深入到内联这些函数? 解决方案 这个问题没有意义。 如果你想到内联及其后果,你会意识到: 避免函数调用(所有寄存器保存/帧调整) 向优化器暴露更多上下文 $ b 重复代码(膨胀指令缓存和可执行文件大小等 ..
发布时间:2016-10-19 20:00:23 C/C++开发

宏在C ++中内联的优点

我们知道在线是有利的,因为它们由编译器检查,并且与宏相比,作为参数传递时,相同的操作(如++ x)不会多次计算。 但是在一次采访中,我被问到具体的优势或情况下,一个宏是更有利于内联C ++。 有人知道 $ p 解决方案 我可以想到的唯一的事情是有一些技巧,你可以使用不能用内联函数完成的宏。在编译时一起粘贴标记,以及那种黑客。 ..
发布时间:2016-10-17 11:06:15 C/C++开发

解析C ++源并将入头内联方法移动到.cpp源文件的工具?

我们的应用程序的源代码是成千上万的行,成千上万的文件,在很多地方很老的应用程序是第一次写于1995年或1996年。在过去几年我的团队已大大提高了质量来源,但一个问题仍然是,特别是错误我:很多类有很多方法在头文件中完全定义。 我没有问题的方法声明内联在一些标题中 - 一个struct的构造函数,一个简单的方法,其中内联可测量使它更快(我们有一些数学函数这样)等等。但是,内联方法的自由使用没有明 ..
发布时间:2016-10-17 10:56:01 C/C++开发

为什么类成员函数内联?

我想我之前已经问过我的问题,我已经阅读过,但仍然很困惑,因此要求澄清。 C ++标准说,类定义中定义的所有成员函数都是内联的 我也听说编译器可以忽略函数的内联。在上面的情况下是真的,如果在类定义的内部定义,它将总是内联的? 此外,这个设计背后的原因是什么,使所有的函数定义在类定义内部?内联与源文件和头文件有什么关系? 更新:因此,如果不内联,应该总是在类外定义他们的函数,对 ..
发布时间:2016-10-17 09:39:36 C/C++开发

我可以选择性(强制)内联函数吗?

在书中清洁代码(以及我遇到并阅读的其他几个文章),建议保持功能小,如果它们变大,打破它们。 在优化软件时, C ++ Agner Fog声明,他不喜欢分割一个函数的规则,因为它跨越了多个行的某个阈值。他说这会导致不必要的跳转,从而降低性能。 首先,我明白,如果我工作的代码不在一个紧的循环并且函数很重,使得调用它们所花费的时间与函数中的代码执行所花费的时间相比是微不足道的。但是让我们假设 ..
发布时间:2016-10-17 09:27:38 C/C++开发

非积分常数

我想要一个非整数常数的头文件,例如。一类。注意常量不需要是编译时常量。 static const std :: string Ten =“10”; 这是编译,但不可取,因为每个编译单元现在都有自己的Ten副本。 const std :: string Ten =“10”; 这将编译,但会因为多重定义的Ten而导致链接器错误。 conste ..
发布时间:2016-10-16 14:31:37 C/C++开发

C ++内联函数使用GCC - 为什么CALL?

我一直在测试C ++中的内联函数调用。 线程模型:win32 gcc版本4.3.3 (4.3.3-tdm-1 mingw32) 在C ++编程语言中的Stroustrup wirtes: 内联说明符是一个提示,指示编译器应该尝试生成代码[...] inline而不是放置函数的代码一次,然后通过通常的函数调用机制调用。 但是,我发现生成的代 ..
发布时间:2016-10-16 14:29:43 C/C++开发

函数声明内部或外部的类

我是一个试图学习C ++的JAVA开发人员,但我不知道标准函数声明的最佳实践。 : class Clazz { public: void Fun1() { //做某事 } } : class Clazz { public: void Fun1 } Clazz :: Fun1(){ // Do something } ..
发布时间:2016-10-14 23:35:39 C/C++开发

C ++内联类方法会导致未定义的引用

当我尝试内联我的一个类的方法时,我得到一个编译器错误。它的工作原理,当我拿走“inline”关键字。 以下是一个简化示例: main.cpp: #include“my_class.h” int main(){ MyClass c; c.TestMethod(); return 0; } my_class.h: b $ b cla ..
发布时间:2016-10-14 23:15:31 C/C++开发

应该从不使用静态内联函数吗?

使用 inline 关键字(§7.1.3 / 4)有两个影响: 提示编译器在调用点处替换函数体优于通常的函数调用机制。 则忽略行内替换,则遵循内联的其他规则(特别是wrt 一个定义规则)。 通常任何主流编译器将在调用点处替换函数体,如果需要的话,则标记 inline 仅用于#1 进一步写$ #2 ,我理解当你声明一个函数为 static inline 函数, 函数上的 s ..
发布时间:2016-10-14 23:05:22 C/C++开发

模板如何工作,它们总是内联吗?

我可以理解它如何工作,如果他们内联。但如果他们不是,它是如何工作的? 解决方案 模板将被内联的标准意义 inline ,这与单一定义规则比与实际代码内联更相关。也就是说,如果模板函数在多个翻译单元中被定义,链接器将不会抱怨,它将只挑选一个(当心:随机一个,当前编译器不提出,如果你在不同的翻译单元中提供不同的模板定义! 现在,和所有其他 inline 函数一样,编译器可以决定实际上避免 ..
发布时间:2016-10-14 21:46:29 C/C++开发

RVO强制编译错误失败

很多讨论在这里关于何时RVO可以做,但不太多,当它实际上做了。如前所述,RVO不能根据标准保证,但是否有一种方法可以确保RVO优化成功或相应的代码无法编译? 到目前为止,我部分成功地使得代码在RVO失败时出现链接错误。为此,我声明复制构造函数而不定义它们。显然,在非罕见的情况下,我需要实现一个或两个拷贝构造函数,即 x(x&&)和 x(x const&)。 这里是我的第二个问题:为什么 ..
发布时间:2016-10-14 20:21:30 C/C++开发