2015-10-02 5 views
2

Я пытаюсь устранить предупреждения в своем проекте, поэтому я могу включить флаг, который обрабатывает предупреждения как ошибки. В проекте используется библиотека ускорения, в частности файлы Concept_check.hpp и cuthill_mckee_ordering.hpp. Предупреждения 4510 и 4610 показаны в файле concept_check.hpp, и я попытался отключить их с помощью #pragma push и pop. Предупреждения вызваны библиотекой boost, пытающейся создать экземпляр класса с использованием шаблона, найденного в concept_check.cpp, когда для него нет конструктора.Невозможно отключить предупреждения, вызванные библиотекой Boost

Мой вопрос заключается в следующем: есть ли более верный способ огня, который я могу отключить эти предупреждения без изменения кода повышения? Я использую Visual studio 2010.

+0

Инстанцирование класса с помощью конструктора, который не существует ошибка Это не то, что это предупреждение означает , –

+0

Пожалуйста, покажите реальный код и фактические предупреждения, которые вы получите. –

ответ

0

Возможно, вы ищете не в том направлении. Как отметил Алан Стоукс, предупреждение существует не просто так. У меня есть три подсказки, которые, возможно, не ответы, которые вы ожидаете, но может принести приемлемый решение:

  1. Вместо глушителей предупреждение, просто исправить ошибку. Я не знаю вашего кода, но есть other people, у которого была аналогичная проблема, которую можно было исправить , просто объявив переменной.

  2. Другой вопрос: почему вы хотите превратить все свои предупреждения в ошибки? Это действительно необходимо? Я согласен с тем, что обычный код всегда должен компилироваться без предупреждений. Но эти предупреждения не происходят из вашего собственного кода. Рассмотрим static code-checker, который предупреждает вас о проблемах, о которых следит ваш компилятор.

  3. Если вы должны использования -WX, переместить вредоносный код, в статический объект/библиотеки/модуля, так что вы будете обеспокоены о предупреждении только тогда, когда вам нужно пересобрать этот модуль. Вы можете использовать определенные параметры компиляции для этого модуля, чтобы полностью исключить предупреждения.


Существует еще одна возможность, но я не в состоянии проверить, является ли она действительно работает. Согласно Microsoft Documentation, можно установить уровень предупреждения для конкретных предупреждений. (есть аналогичные options for GCC). Во-первых, включите все предупреждения об ошибках:

/WX 

Затем установите уровень предупреждения двух предупреждений обижая к нулю:

/W04510 /W04610 

Полный командной строки будет выглядеть следующим образом:

cl source.cpp /WX /W04510 /W04610 

Лучшим решением было бы объединить это с намеком 3 выше. Таким образом, конкретные параметры компилятора используются только для файлов, вызывающих предупреждения.

1

Возможно these решения работают.

Вы можете отключить конкретное предупреждение из .h файла (предупреждение #pragma (отключить:. ....)

+0

К сожалению, эта стратегия не сработала для меня в этой ситуации. Обычно я пытаюсь подавить предупреждения, но по какой-то причине для меня это не сработает. – Mansav

Смежные вопросы