Как исправить проблемы с отключением #pragma предупреждений, которые не отображаются правильно
В настоящее время у меня возникла проблема с использованием сторонней библиотеки, которая сломала прагмы, которые выдвигают множество отключенных предупреждений, не высовывая их правильно, поэтому они остаются отключенными навсегда. Я хочу, чтобы предупреждения были включены для обнаружения любых проблем в моем коде, включая сторонние файлы. Поскольку изменение стороннего источника должно быть последним средством, я хотел бы знать, есть ли другие варианты, чтобы это исправить.
Единственное, о чем я могу думать, это добавить вручную #pragma warning (pop)
звонки, пока предупреждения не начинают появляться снова, но это кажется действительно грязным. Есть ли какой-нибудь простой способ просто вытолкнуть все, что было выдвинуто за один раз, или что-то в этом роде? Если это не вариант, есть ли другие способы решения этой проблемы, кроме попыток выяснить, как исправить сломанные прагмы в стороннем источнике? Сторонний источник очень сложен, поэтому исправить его там будет нелегко.
РЕДАКТИРОВАТЬ: Кажется, что нет реального решения для этого, кроме исправления стороннего кода, поэтому я думаю, что я просто поработаю с грязным решением добавления нескольких #pragma warning (pop)
операторы в файлах, над которыми работают, чтобы убедиться, что предупреждения включены. Это отстой, очень много, но у меня нет времени на исправление стороннего кода, так что сейчас придется это сделать... Я оставлю это открытым на пару дней, и если не найдется лучшего решения, тогда Я закрою это как-нибудь.
3 ответа
Похоже, что единственным решением этой проблемы является либо исправление ошибки в стороннем коде, либо добавление вручную #pragma warning(pop)
несколько раз после включения сторонних файлов, пока не начнут появляться предупреждения. Мне пришлось добавить эту строку четыре раза.
Оба эти варианта - отстой, но пока другого пути нет.
Если я правильно читаю, вы должны сделать:
#pragma warning( push )
#include "offending_lib.h"
#pragma warning( pop )
Я предлагаю написать обертку в эту стороннюю библиотеку, чтобы только приглушенные пострадали от приглушенных предупреждений.
В качестве побочного эффекта вы также извлекаете выгоду, сводя к минимуму риск при изменении библиотеки или даже при переходе на другую библиотеку.
В любом случае, если вы используете VC, вы можете сбросить поведение предупреждения с помощью:
#pragma warning(default)
Ссылка: http://msdn.microsoft.com/en-us/library/2c8f766e.aspx