Aracılığıyla paylaş


Derleyici Uyarısı (hata) C4597

tanımsız davranış: offsetof sanal tabanın bir üyesine uygulanır

Where offsetof(T, m) kullanıldığında m statik veri üyesi veya üye işlevi C4597 sonucunu elde eder.

Açıklamalar

Bu uyarı Visual Studio 2017 sürüm 15.3'te yenidir. Varsayılan olarak hata olarak bildirilir. Uyarıları derleyici sürümüne göre devre dışı bırakma hakkında bilgi için bkz . Derleyici sürümüne göre derleyici uyarıları.

Örnek

Aşağıdaki kod C4597 hatasını oluşturur:

#include <cstddef>

struct A {
   int ten() { return 10; }
   static constexpr int two = 2;
};

constexpr auto off = offsetof(A, ten);  // C4597: undefined behavior: offsetof applied to member function 'A::ten'
constexpr auto off2 = offsetof(A, two); // C4597: undefined behavior: offsetof applied to static data member 'A::two'

Bu kod kötü biçimlendirilmiş ve çalışma zamanında kilitlenmeye neden olabilir. Hatayı düzeltmek için kodu değiştirin: üye işlevlerinde veya statik veri üyelerinde çağırmayın offsetof . C++ standardı tarafından izin verilmeyen taşınabilir olmayan kod.