Подключение сишных заголовочных файлов в С++ с флагом -Wold-style-cast

Из-за -Wold-style-cast компилятор будет ругаться (там определены много inline функций), но делать нормальный плюсовый файл или переносить функции в .c - не вариант.

Что можно сделать, чтобы компилятор не сыпал предупреждениями?


Ответы (1 шт):

Автор решения: αλεχολυτ

Как указали в комментарии, достаточно обернуть проблемный код в соответствующие диагностические #pragma:

int main() {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wold-style-cast"
    int* i = (int*)0;           // нет предупреждения
#pragma GCC diagnostic pop     

    int* p = (int*)0;           // есть предупреждение
    
    (void)i;
    (void)p;
}

В случае с заголовочным файлом можно либо обернуть всё тело файла в эти прагмы, либо только строчку, где производится подключение через #include.

Любопытно заметить, что на касты вида (void)i, используемые для подавления предупреждений о неиспользуемых переменных, диагностика не выводится даже вне блока прагм.

→ Ссылка