Compiler Warning C4984
'if constexpr' adalah ekstensi bahasa C++17
Keterangan
Pengkompilasi menemukan ekspresi dalam kode yang if constexpr
dikompilasi dengan menggunakan standar C++14 default. Ekspresi ini ditentukan mulai dari standar C++17. Jika Anda memerlukan kompatibilitas C++11 atau C++14, ekspresi ini tidak portabel.
C4984 dikeluarkan sebagai kesalahan secara default, tetapi dapat ditekan. Untuk mengaktifkan ekspresi ini dengan mengkompilasi kode Anda sebagai C++17, gunakan /std:c++17
mode atau yang lebih baru. Untuk menggunakan ekspresi dalam kode yang if constexpr
dikompilasi untuk C++14 sebagai ekstensi Microsoft, Anda dapat menekan, menonaktifkan, atau mengubah tingkat peringatan pesan kesalahan. Anda dapat menggunakan /wd4984 untuk menonaktifkan C4984, atau /wN4984 untuk mengaktifkannya sebagai peringatan tingkat N alih-alih kesalahan. Atau, gunakan #pragma warning(suppress:4984)
sebelum baris yang menyebabkan peringatan dalam file sumber Anda.
Peringatan ini tersedia mulai di Visual Studio 2017 versi 15.3. Untuk informasi tentang cara menonaktifkan peringatan yang diperkenalkan dalam versi kompilator tertentu atau yang lebih baru, lihat Compiler Warnings berdasarkan versi kompilator.
Contoh
Sampel ini menghasilkan C4984, dan menunjukkan cara untuk memperbaikinya:
// C4984.cpp
// compile with: cl /EHsc C4984.cpp
#include <iostream>
int main()
{
constexpr bool compile_time = true;
// Uncomment the following line or use /std:c++17 to fix
// #pragma warning(suppress:4984)
if constexpr (compile_time)
{
std::cout << "compile_time is true";
}
else
{
std::cout << "compile_time is false";
}
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk