Peringatan Pengompilasi (level 4) C4841
ekstensi non-standar yang digunakan: pendesain anggota gabungan yang digunakan dalam
offsetof
Keterangan
Jika Anda menggunakan offsetof(T, m)
, di mana m
adalah penanda anggota gabungan, pengkompilasi menghasilkan peringatan saat Anda mengkompilasi dengan /Wall
opsi .
Peringatan ini baru di Visual Studio 2017 versi 15.3, dan nonaktif secara default. Gunakan /Wall
untuk mengaktifkan semua peringatan yang nonaktif secara default, atau /w14841
untuk mengaktifkan C4841 sebagai peringatan tingkat 1. Untuk informasi selengkapnya, lihat Peringatan pengkompilasi yang nonaktif secara default. Untuk informasi tentang cara menonaktifkan peringatan berdasarkan versi kompilator, lihat Peringatan pengkompilasi menurut versi kompilator.
Contoh
Kode berikut tidak terbentuk dan berpotensi menyebabkan crash saat runtime:
struct A {
int arr[10];
};
// warning C4841: non-standard extension used: compound member designator in offsetof
constexpr auto off = offsetof(A, arr[2]);
Untuk memperbaiki masalah ini, ubah kode agar tidak digunakan offsetof
dengan perancang anggota gabungan.