Melumpuhkan Amaran GCC untuk Bahagian Khusus Unit Terjemahan
Mencapai kefungsian yang serupa dengan kod prapemproses MSVC yang disediakan dalam GCC mungkin tidak mudah , tetapi terdapat penyelesaian yang berdaya maju menggunakan pragma diagnostik GCC.
Pragma diagnostik GCC #pragma Diagnostik GCC boleh digunakan untuk memanipulasi tetapan amaran dan ralat dalam unit terjemahan. Ia membenarkan anda untuk melumpuhkan atau mengabaikan amaran tertentu buat sementara waktu.
Untuk melumpuhkan amaran secara bersyarat, gunakan sintaks berikut:
#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wwhatever" // Code that would normally generate the warning #pragma GCC diagnostic pop
Pendekatan ini akan menyekat amaran yang ditentukan dalam blok kod yang ditentukan sementara membenarkan amaran dijana di tempat lain dalam terjemahan unit.
Contoh:
Bayangkan fail header math.h yang mengandungi divide() fungsi yang mungkin membahagi dengan sifar. Anda mahu menghalang amaran ini daripada dikeluarkan apabila memasukkan math.h dalam fail sumber lain.
Dalam math.h:
#include <cmath> int divide(int a, int b) { return std::floor(static_cast<double>(a) / b); }
Dalam fail sumber yang berasingan:
#include "math.h" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdiv-by-zero" divide(1, 0); // The warning is suppressed here #pragma GCC diagnostic pop divide(2, 3); // Warning is still generated for this call
Dengan melumpuhkan amaran secara terpilih dengan cara ini, anda boleh menghalang bahagian tertentu pangkalan kod anda daripada menjana amaran yang tidak diingini sambil mengekalkan tingkah laku amaran yang diingini di tempat lain.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melumpuhkan Amaran GCC Secara Selektif dalam Bahagian Kod Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!