Как исправить проблемы с отключением #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

Другие вопросы по тегам