Поделиться через


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.

См. также

Ссылки

Директивы pragma и ключевое слово __Pragma