"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso compilar código C com estruturas ou uniões anônimas?

Como posso compilar código C com estruturas ou uniões anônimas?

Publicado em 2024-11-08
Navegar:506

How Can I Compile C Code with Anonymous Structs or Unions?

Compilando código C com estruturas/uniões anônimas

A questão surge sobre como compilar código C com estruturas ou uniões anônimas, conforme demonstrado em C com campos anônimos usando uniões. Em C, uma tentativa de criar uma estrutura semelhante usando estruturas nomeadas contendo uma união anônima resulta em erros de compilação.

As mensagens de erro indicam que a união anônima e os campos de estrutura não são declarados na declaração de estrutura. Para habilitar este recurso em C, é necessário usar o sinalizador do compilador -fms-extensions.

Código revisado com -fms-extensions

#include 
#include 

typedef struct {
    union {
        float x, y, z;
    } xyz;
} Vector3;

int main() {
    Vector3 v;
    assert(&v.xyz.x == &v.x);
    assert(&v.xyz.y == &v.y);
    assert(&v.xyz.z == &v.z);
    return 0;
}

Com esta modificação, o código será compilado com sucesso e as asserções serão aprovadas, confirmando que os endereços dos membros do sindicato e os campos struct são equivalentes.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3