2016-12-15 4 views
0

Я пытаюсь использовать атрибут gcc function для функции auto с типом конца, но gcc-компилятор продолжает отклонять код. Я основывая позицию НКУ атрибута на примерах здесь:Где разместить атрибут функции gcc в функции auto

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

Кажется, что перед объявлением функции разрешено использовать ключевое слово атрибута.

следующие правила, которые я нашел в синтаксисе gcc атрибута spec:

список атрибутов спецификатор может появиться непосредственно перед описателя (кроме первого) в разделенных запятыми список declarators в объявлении более одного идентификатора, используя один список спецификаторов и определителей.

и

список Спецификатор атрибута может появиться непосредственно перед запятой, или точкой с запятой = завершения декларации идентификатора, кроме определения функции. Такие спецификаторы атрибутов применяются к объявленному объекту или функции.

 Смежные вопросы

  • Нет связанных вопросов^_^