【问题标题】:How to put lambda in a different section with GCC?如何使用 GCC 将 lambda 放在不同的部分?
【发布时间】:2014-07-10 05:07:38
【问题描述】:

我正在使用 C++11 编译器生成嵌入式代码,我想在其中使用 lambda 函数。但是,我需要将我的 lambda 函数的实际生成代码放在不同的部分中,或者始终将其内联到使用它的函数/方法中(默认情况下,如果某些 lambda 函数未内联,则将其放入“.text”部分) .有没有办法为 lambda 函数设置部分属性?或者有没有办法让 GCC 编译器总是内联 lambda 函数?

【问题讨论】:

  • 为什么需要更改部分?
  • @user4815162342 没关系。如果我说我需要更改部分,那么我需要更改部分。
  • 是否有更好的方法来满足实际需求很重要 - 请参阅xy problem。请注意,我并不是说您在这里提出 xy 问题,只是说基本要求与 SO 无关。
  • @user4815162342 我在问一个具体的问题,如果你不知道具体问题的答案,请不要写任何东西。
  • 我没有回答这个问题,我是在评论中要求澄清,这是 SO 的惯例。如果您无法或不愿意提供上述说明,请不要回复。

标签: gcc lambda


【解决方案1】:

这会将 lambda 放入 .mylambdas 部分

auto myLambda = [&]() __attribute__((section(".mylambdas")) 
{ 
  ... 
};

注意:gcc 存在一个错误,如果您在常规类方法和 const 类方法中为 lambdas 使用相同的部分名称,它会报错。叮当没问题。如果可能的话,一种解决方法是为 const 方法使用另一个部分名称。

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 2013-03-08
    • 2023-03-09
    • 2017-07-20
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多