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.