gpt4 book ai didi

GCC __attribute__((always_inline)) 和 lambdas,这种语法正确吗?

转载 作者:行者123 更新时间:2023-12-04 16:00:40 24 4
gpt4 key购买 nike

我正在使用 GCC 4.6 作为 Cortex 嵌入式处理器的 lpcxpresso ide 的一部分。我的代码大小非常有限,尤其是在 Debug模式下编译时。使用 属性 ((always_inline)) 到目前为止已被证明是内联琐碎函数的好工具,这可以在 Debug模式下节省大量代码膨胀,同时仍保持可读性。我希望它在 future 会成为主流并得到支持,因为这里提到了 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/CIAJGAIH.html

现在我的问题是:这是声明 Lambda 始终内联的正确语法吗?

#define ALWAYS_INLINE __attribute__((always_inline))
[](volatile int &i)ALWAYS_INLINE{i++;}

它确实有效,我的问题是它将来会继续有效吗?我能做些什么来确保它在 future 有效。如果我切换到另一个支持 c++11 的主要编译器,我会找到一个类似的关键字,我可以替换 属性 ((always_inline)) 与?
如果我要见到我的仙女教母,我希望有一个编译器指令,它会导致所有 lambdas 被构造为具有空构造函数的临时变量并通过引用绑定(bind),即使在 Debug模式下也会自动内联。有任何想法吗?

最佳答案

Will it continue to work in future?



可能但是, always_inline是特定于编译器的,并且由于没有标准指定其与 lambda 的确切行为,因此无法保证这将在 future 继续工作。

What can I do to ensure it works?



这取决于编译器而不是你。如果 future 版本不再支持 always_inline使用 lambda,你必须坚持使用一个可以工作的版本,或者编写你自己的预处理器,用 always_inline 内联 lambda。 -like 关键字。

If I ever switch to another major compiler that supports c++11 will I find a similar keyword?



可能但同样,没有保证。唯一真正的标准是 C++ inline关键字,它不适用于 lambdas。对于非 lambda,它只建议内联并告诉编译器一个函数可以在不同的编译单元中定义。

关于GCC __attribute__((always_inline)) 和 lambdas,这种语法正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17365085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com