Ostrzeżenie kompilatora (poziom 4) C4841

nietypowe używane rozszerzenie: projektowanie składowych złożonych używanych w offsetof

Uwagi

Jeśli używasz offsetof(T, m)metody , gdzie m jest projektowaniem składowych złożonych, kompilator generuje ostrzeżenie podczas kompilowania z opcją /Wall .

To ostrzeżenie jest nowe w programie Visual Studio 2017 w wersji 15.3 i jest domyślnie wyłączone. Użyj /Wall polecenia , aby włączyć wszystkie ostrzeżenia wyłączone domyślnie lub /w14841 włączyć C4841 jako ostrzeżenie poziomu 1. Aby uzyskać więcej informacji, zobacz Ostrzeżenia kompilatora, które są domyślnie wyłączone. Aby uzyskać informacje na temat wyłączania ostrzeżeń według wersji kompilatora, zobacz Ostrzeżenia kompilatora według wersji kompilatora.

Przykład

Poniższy kod jest źle sformułowany i może spowodować awarię w czasie wykonywania:

struct A {
   int arr[10];
};

// warning C4841: non-standard extension used: compound member designator in offsetof
constexpr auto off = offsetof(A, arr[2]);

Aby rozwiązać ten problem, zmień kod tak, aby nie był używany offsetof z projektantem składowych złożonych.