Подключение сишных заголовочных файлов в С++ с флагом -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
, используемые для подавления предупреждений о неиспользуемых переменных, диагностика не выводится даже вне блока прагм.