Как я могу подавить предупреждения GCC об отсутствии прототипов для процедур прерывания, когда используется -Wmissing-prototypes?

Я пишу встроенный код на C, используя MPLABX (IDE для продуктов Microchip) и компилятор XC16 (который основан на GCC).

Я использую -Wmissing-prototypes, чтобы убедиться, что у меня есть прототипы для всех моих функций. Моя проблема в том, что у меня много подпрограмм обслуживания прерываний, и это заставляет компилятор жаловаться на отсутствие прототипов и для них.

Поскольку функции ISR никогда не вызываются непосредственно пользовательским программным обеспечением, я не хочу помещать их прототип в свой код.

Есть ли способ показать предупреждения об отсутствующих прототипах, кроме для процедур обслуживания прерываний (т. Е. Функций, помеченных __attribute__((interrupt,auto_psv)))?


person Community    schedule 18.04.2013    source источник
comment
Почему бы вам просто не сделать прототипы рядом с определениями?   -  person Carl Norum    schedule 18.04.2013
comment
Я думал об этом, но, поскольку я не слишком знаком с gcc, я подумал, что может быть более чистый способ, о котором я не знал. Если бы я сделал это таким образом, я бы включил только тег атрибута в прототип или и прототип, и определение?   -  person    schedule 18.04.2013
comment
Я не думаю, что это важно. Но если вы хотите, чтобы это было только в одном месте, я думаю, что прототип - это место. Я смутно помню, что у меня возникла проблема с always_inline необходимостью быть в одном или другом месте, но я не помню, в каком именно.   -  person Carl Norum    schedule 18.04.2013


Ответы (1)


Я последовал совету Карла Норума и просто добавил прототипы функций прямо над определениями функций.

В качестве примера:

void __attribute__((interrupt,auto_psv)) _SPI2ErrInterrupt(void);
void _SPI2ErrInterrupt(void)
{
    // Do ISR stuff...
}
person Community    schedule 18.04.2013