warning
Включает селективное изменение расширения функциональности предупредительных сообщений предупреждения компилятора.
#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...] )
#pragma warning( push[ ,n ] )
#pragma warning( pop )
Заметки
Доступны следующие параметры предупреждение-описателя.
предупреждение-описатель |
Значение |
---|---|
1, 2, 3, 4 |
Примените заданный уровень в определенные предупреждения.Это также включает заданное предупреждение, которое по умолчанию. |
default |
Реакция на событие возврата предупреждающая присвоено значение по умолчанию.Это также включает заданное предупреждение, которое по умолчанию.Предупреждение формируется на своем документированном по умолчанию уровне. Дополнительные сведения см. в разделе Предупреждения компилятора, которые по умолчанию. |
disable |
Не выполните указанное предупреждение. |
error |
Информируйте отдельные предупреждения как ошибки. |
once |
Показывать указанные сообщения только один раз. |
suppress |
Сохраняет текущее состояние прагмы в стеке запрещает указанное предупреждение для следующей линии, а затем извлекает состояние предупреждения стек, что директивы pragma будет сброшен. |
В следующей выписку кода показано, что значение a warning-number-list параметр может содержать несколько предупреждений, чисел и ее несколько warning-specifier параметры можно указывать в одной директиве pragma.
#pragma warning( disable : 4507 34; once : 4385; error : 164 )
Это функционально эквивалентен следующему коду.
// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )
// Issue warning 4385 only once.
#pragma warning( once : 4385 )
// Report warning 4164 as an error.
#pragma warning( error : 164 )
Компилятор добавляет 4000 к любому числу, предупреждающему между 0 и 999.
Для номеров предупреждений в диапазоне 4700-4999, один связаны с созданием кода, состояние предупреждения в силе, если компилятор обнаруживает открытая фигурная скобка функции находит в силе для остальной части функции.Использование warning директива pragma в функции, чтобы изменить состояние предупреждения, которое содержит число больше 4699 вступит в силу только после конца функции.В следующем примере показано правильное размещение warning прагмы, чтобы отключить предупреждение формирования кода, а затем извлечь его.
// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
int x;
int y = x; // no C4700 here
#pragma warning(default:4700) // C4700 enabled after Test ends
}
int main() {
int x;
int y = x; // C4700
}
Обратите внимание, что в тело функции, последний параметр warning директива pragma будет находиться в силе для функции целого.
Принудительная и поп
warning директива pragma также поддерживает следующий синтаксис.
#pragma warning( push [ ,n ] )
#pragma warning( pop )
Где n представляет порог предупреждений (от 1 до 4).
Директива pragma warning( push )сохраняет текущее состояние предупреждения для каждого предупреждения.Директива pragma warning( push,n)сохраняет текущее состояние для каждого предупреждения и устанавливает порог предупреждений к глобальным n.
Директива pragma warning( pop )извлекает последнее состояние предупреждения отправлянное в стек.Любые изменения, произведенные в предупреждающему состояние между push и pop отменить.Рассмотрим следующий пример.
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
В конце этого кода pop извлекает состояние каждого предупреждения (включает 4705, 4706 и 4707) с его в начале кода.
При написании файлы заголовков, можно воспользоваться push и pop чтобы гарантировать, что изменения, выполненные пользователем предупреждение-состояния не препятствуют заголовки из компилировать правильно.Используйте push в начале заголовка и pop в конце.Например, если имеется заголовок, который не будет компилироваться чисто на пороге предупреждений 4, в следующем коде изменится порог предупреждений до 3, а затем восстановитьTm бы исходный порог предупреждений в конце заголовка.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
Дополнительные сведения о параметрах компилятора, которые помогают подавления предупреждений см. в разделе /FI и /w.