我正在使用GCC 4.6作为lpcxpresso ide的一部分,用于Cortex嵌入式处理器。在调试模式下编译代码时,我的代码大小非常有限。使用attribute((always_inline))已经被证明是内联琐碎函数的好工具,这可以节省大量调试模式下的代码膨胀,同时仍然保持可读性。我希望它在未来会成为主流并得到支持,因为它在这里http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/CIAJGAIH.html中提到了。
现在我的问题是:这是声明Lambda始终内联的正确语法吗?
现在我的问题是:这是声明Lambda始终内联的正确语法吗?
#define ALWAYS_INLINE __attribute__((always_inline))
[](volatile int &i)ALWAYS_INLINE{i++;}
它确实可行,我的问题是它在未来是否仍然可行,并且我该如何确保它在未来继续可行。如果我换用支持c++11的另一个主要编译器,我会找到类似的关键字,可以用它替换attribute ((always_inline))吗? 如果我能遇见我的仙女教母,我会许愿有一个编译器指令,可以使所有使用空构造函数构造并通过引用绑定的临时lambda即使在调试模式下也自动内联。有什么想法吗?
[[always_inline]]
。但是GCC似乎还没有使用符合标准的语法。讨论一个预C++11的GCC属性在C++11 lambda中放置的位置可能具有有限的价值。 - MSalters[[gnu::always_inline]]
。 - Ruslan[[always-inline]]
。它明确是假设性的。如果我没记错,GCC 4.6也没有[[gnu::always-inline]]
语法。 - MSalters