传递lambda作为参数时,gcc无法扩展宏? - gcc bug

时间:2018-05-17 13:48:48

标签: c++ gcc

我试图实施一个简单的ScopeGuard并遇到这个问题。

以下是代码:

的main.cpp

#define ON_SCOPE_EXIT(callback)

int main()
{
    int a,b;

   //this works well
    ON_SCOPE_EXIT([a]{});

    //fail to compile (actually preprocessor fails)
    ON_SCOPE_EXIT([a,b]{});
    return 0;
}

```

编译: g ++ main.cpp -std = c ++ 11 -o test

编译器说:

  

main.cpp:14:26:错误:宏" ON_SCOPE_EXIT"通过2个参数,但是   只需1        ON_SCOPE_EXIT([A,B] {});                             ^ main.cpp:在函数'int main()'中:main.cpp:14:5:错误:在此范围内未声明'ON_SCOPE_EXIT'        ON_SCOPE_EXIT([A,B] {});

我的g ++版本是g ++(GCC)4.8.5 20150623(Red Hat 4.8.5-4)。 但是,它也适用于g ++ 5.4.0。

0 个答案:

没有答案