C4204: используется нестандартное расширение: неконстантный агрегатный инициализатор - PullRequest
0 голосов
/ 06 февраля 2020

Я получаю предупреждение C4204: используется нестандартное расширение: неконстантный агрегатный инициализатор для строки union {float f; uint_fast32_t i;} u = {x}; в следующей функции.

static inline int  __ef (float x)
{
union {float f; uint_fast32_t i;} u = {x};
#if defined( _C_ ) || defined( _C1_ )
        return (u.i >> 4) & 0xff;
#else
        return (u.i >> 3) & 0xff;
#endif
}

Как можно смягчить это предупреждение ,

1 Ответ

1 голос
/ 06 февраля 2020

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4204?view=vs-2019

С расширениями Microsoft (/ Ze) вы можете инициализировать агрегатные типы (массивы, структуры, объединения и классы) со значениями, которые не являются константами .

...

Такие инициализации недопустимы при совместимости с ANSI (/Za).

Вы можете отключить предупреждение с помощью #pragma warning(disable:4204)

...