2016-12-15 83 views
0

我想在尾随类型的自动函数上使用gcc函数属性,但gcc编译器不断拒绝代码。我立足于这里的例子是gcc属性的位置:哪里把gcc函数属性放在自动函数中

https://gcc.gnu.org/onlinedocs/gcc-4.3.5/gcc/Function-Attributes.html

// ok 
    int my_int_gcc_func() 
    __attribute__((abi_tag ("tag1") , weak)) //ok 
    ; 

    // error 
    auto my_auto_gcc_func_not_working() 
    __attribute__((abi_tag ("tag2") , weak)) // error 
    -> int 
    // cant place attribute here, get different warning.. 
    ; 

参考文献立即就地属性的功能参数之后。

我发现通过试错,我可以在整个函数声明的前面移动属性关键字,但找不到任何正式的规范说,这是允许/与gcc支持...

// ok 
    __attribute__((abi_tag ("tag2") , weak)) // seems ok 
    auto my_auto_gcc_func_no_error() 
    -> int 
    ; 

回答

0

似乎允许在函数声明前使用attribute关键字。

的属性说明符列表可以立即出现在以逗号分隔的说明符的列表中的声明的声明符(比所述第一其他)之前:

以下规则我在gcc属性语法spec发现多个标识符使用说明符和限定符的单个列表。

的属性说明符列表可能会立即出现在逗号之前,=或分号终止比函数定义其它的标识符的声明。这些属性说明符适用于声明的对象或函数。