Bagikan melalui


warning pragma

Mengaktifkan modifikasi selektif perilaku pesan peringatan kompilator.

Sintaksis

#pragma warning(
 [ ]
 [ ... ]
[ n ]
#pragma warning( pop )

Komentar

Parameter penentu peringatan berikut tersedia.

penentu peringatan Arti
,,, Terapkan tingkat yang diberikan ke peringatan yang ditentukan. Misalnya: mematikan peringatan 5033 (biasanya peringatan level 1) kecuali tingkat peringatan diatur ke atau lebih tinggi. Juga dapat digunakan untuk mengaktifkan peringatan tertentu yang dinonaktifkan secara default.
default Reset perilaku peringatan ke nilai defaultnya. Juga mengaktifkan peringatan tertentu yang nonaktif secara default. Peringatan akan dihasilkan pada tingkat default, didokumenkan, .

Untuk informasi selengkapnya, lihat peringatan Compiler yang nonaktif secara default.
disable Jangan terbitkan pesan peringatan yang ditentukan. Properti opsional diizinkan.
error Laporkan peringatan yang ditentukan sebagai kesalahan.
once Tampilkan pesan yang ditentukan hanya satu kali.
suppress Mendorong status saat ini pada tumpukan, menonaktifkan peringatan yang ditentukan untuk baris berikutnya, lalu memunculkan tumpukan peringatan sehingga status diatur ulang.
justification String opsional yang menjelaskan alasan menonaktifkan atau menekan peringatan. Diperkenalkan dalam Visual Studio 2022 versi 17.14.

Pernyataan kode berikut menggambarkan bahwa parameter dapat berisi beberapa angka peringatan, dan bahwa beberapa parameter dapat ditentukan dalam arahan yang sama.

#pragma warning( disable : 4507 4034; once : 4385; error : 164 )

Namun, ketika bidang ada, hanya satu nomor peringatan yang dapat ditentukan. Pernyataan kode berikut menggambarkan penggunaan bidang.

#pragma warning( disable : 4507, justification : "This warning is disabled" )

Gunakan bidang untuk menjelaskan mengapa peringatan dinonaktifkan atau disembunyikan. Bidang hanya didukung untuk dan . Pembenaran muncul dalam output Format Pertukaran Hasil Analisis Statis (SARIF) saat opsi ditentukan. Nilainya adalah literal string sempit yang dikodekan UTF-8. Untuk menghasilkan file SARIF, gunakan opsi pengkompilasi.

Arahan ini secara fungsional setara dengan kode berikut:

// Disable warning messages 4507 and 4034.
#pragma warning(disable : 4507 4034)

// Issue warning C4385 only once.
#pragma warning(once : 4385)

// Report warning C4164 as an error.
#pragma warning(error : 164)

Pengkompilasi menambahkan 4000 ke nomor peringatan apa pun yang berada di antara 0 dan 999.

Nomor peringatan dalam rentang 4700-4999 dikaitkan dengan pembuatan kode. Untuk peringatan ini, status peringatan yang berlaku ketika kompilator mencapai definisi fungsi tetap berlaku untuk sisa fungsi. Penggunaan dalam fungsi untuk mengubah status angka peringatan yang lebih besar dari 4699 hanya berlaku setelah akhir fungsi. Contoh berikut menunjukkan penempatan yang benar untuk menonaktifkan pesan peringatan pembuatan kode, lalu memulihkannya.

// 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 compiling Test()
}

int main()
{
   int x;
   int y = x; // C4700
}

Perhatikan bahwa di seluruh isi fungsi, pengaturan terakhir akan berlaku untuk seluruh fungsi.

Dorong dan pop

juga mendukung sintaks berikut, di mana parameter n opsional mewakili tingkat peringatan (1 hingga 4).

#pragma warning( push [ , n ] )

#pragma warning( pop )

menyimpan status peringatan saat ini untuk setiap peringatan. menyimpan status saat ini untuk setiap peringatan dan mengatur tingkat peringatan global ke n.

memunculkan status peringatan terakhir yang didorong ke tumpukan. Setiap perubahan yang Anda buat pada status peringatan antara dan dibatalkan. Pertimbangkan contoh ini:

#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )

Pada akhir kode ini, memulihkan status setiap peringatan (termasuk 4705, 4706, dan 4707) ke apa yang ada di awal kode.

Saat menulis file header, Anda dapat menggunakan dan untuk menjamin bahwa perubahan status peringatan yang dibuat oleh pengguna tidak mencegah header dikompilasi dengan benar. Gunakan di awal header dan di akhir. Misalnya, Anda mungkin memiliki header yang tidak dikompilasi dengan bersih pada tingkat peringatan 4. Kode berikut mengubah tingkat peringatan menjadi 3, lalu memulihkan tingkat peringatan asli di akhir header.

#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )

Memilih antara dan

Baik dan menawarkan kontrol halus atas penekanan peringatan:

  • [[gsl::suppress]] hanya menekan peringatan yang dipancarkan oleh Microsoft C++ Code Analysis. Gunakan dengan pemeriksaan Pedoman Inti C++, yang dapat diterapkan ke cakupan atau deklarasi tertentu.
  • dapat digunakan untuk peringatan pengkompilasi apa pun. Ini berguna ketika Anda perlu menekan peringatan dalam blok kode tertentu tanpa mengubah struktur kode secara signifikan.

Jika memungkinkan, gunakan [[gsl::suppress]] untuk menekan peringatan Code Analysis Microsoft C++.

Untuk informasi selengkapnya tentang opsi pengompilasi yang membantu Anda menekan peringatan, lihat dan .

Lihat juga

arahan Pragma dan kata kunci dan