Verbundene Literale in MSVC

In GCC kann ich Folgendes tun:

(CachedPath){ino}
inode->data = (struct Data)DATA_INIT;

wo

struct CachedPath
{
    Ino ino;
};

typedef int8_t Depth;
struct Data
{
    Offset size;
    Blkno root;
    Depth depth;
};
#define DATA_INIT {0, -1, 0}

MSVC gibt den folgenden Fehler für diese Art von Casts aus:

error C2143: syntax error : missing ';' before '{'

Wie kann ich das in MSVC machen? Beachten Sie außerdem, dass der Code von C99 konvertiert wurde, wo ich dafür festgelegte Initialisierer verwendet und ihn dann auf ähnliche Weise umgewandelt habe. Klarheit darüber, wie diese verschiedenen Funktionen zwischen C99- und MSVC / GCC-Implementierungen von C ++ zusammenhängen, ist erwünscht.