Literales compuestos en MSVC

En GCC, puedo hacer esto:

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

dónde:

struct CachedPath
{
    Ino ino;
};

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

MSVC da el siguiente error para este tipo de conversiones:

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

¿Cómo puedo hacer esto en MSVC? Además, tenga en cuenta que el código se ha convertido de C99, donde utilicé inicializadores designados para esto, y luego lo lancé de manera similar. Se agradece cualquier claridad sobre cómo se relacionan estas diversas características entre C99 y las implementaciones MSVC / GCC de C ++.

Respuestas a la pregunta(4)

Su respuesta a la pregunta