Bagikan melalui


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.