Compiler Warning (level 4, off) C5240
'attribute-string': atribut diabaikan dalam posisi syntactic ini
Keterangan
Peringatan C5240 terjadi ketika [[nodiscard]]
atribut atau [[maybe_unused]]
ditemukan dalam posisi syntactic yang salah. Misalnya, [[nodiscard]]
atribut dalam posisi syntactic ini berlaku untuk decl-specifier-seq
, bukan untuk fungsi f
:
static [[nodiscard]] int f() { return 1; }
Sebelum Visual Studio 2019 versi 16.10, pengkompilasi akan secara diam-diam mengabaikan penggunaan [[nodiscard]]
atribut atau [[maybe_unused]]
dalam posisi sintik yang tidak berlaku untuk fungsi atau objek yang dideklarasikan. Di Visual Studio 2019 versi 16.10 dan yang lebih baru, pengkompilasi memancarkan peringatan C5240 tingkat 4 secara default sebagai gantinya. Untuk informasi selengkapnya tentang cara mengaktifkan peringatan ini, lihat Peringatan pengkompilasi yang nonaktif secara default.
Contoh
Contoh berikut menunjukkan bagaimana peringatan 5240 dapat terjadi:
// c5240.cpp
// Compile using: cl /EHsc /W4 /std:c++17 /permissive- /c c5240.cpp
#pragma warning( default: 5240 )
static [[nodiscard]] int f() { return 1; } // C5240
Untuk memperbaiki masalah ini, pindahkan atribut ke posisi sintaksis yang benar:
// c5240_fixed.cpp
// Compile using: cl /EHsc /W4 /std:c++17 /permissive- /c c5240_fixed.cpp
#pragma warning( default: 5240 )
[[nodiscard]] static int f() { return 1; } // OK
Baca juga
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