Bagaimanakah Saya Boleh Mengumpul Struktur/Kesatuan Tanpa Nama dalam C dengan GCC?

Patricia Arquette
Lepaskan: 2024-10-31 21:20:29
asal
815 orang telah melayarinya

How Can I Compile Anonymous Structs/Unions in C with GCC?

Menyusun Kod C dengan Struktur/Kesatuan Tanpa Nama

Struktur dan kesatuan tanpa nama membenarkan struktur data yang fleksibel tanpa perlu mengisytiharkan struktur/kesatuan yang berasingan taip. Dalam C , struct/kesatuan tanpa nama boleh dibuat menggunakan struct dan kesatuan bersarang; namun, C tidak memberikan sokongan langsung untuk fungsi ini.

Untuk mencapai kefungsian serupa dalam C dengan GCC, anda boleh menggunakan bendera -fms-extensions. Bendera ini mendayakan sambungan gaya Microsoft, termasuk sokongan untuk struct/kesatuan tanpa nama.

Sebagai contoh, pertimbangkan kod berikut:

<code class="c">typedef struct {
    union {
        struct {
            float x, y, z;
        };
        float xyz[3];
    };
} Vector3;</code>
Salin selepas log masuk

Dengan penambahan -fms- sambungan bendera, kod berjaya dikompil dengan arahan berikut:

gcc -fms-extensions -c <source_file>.c
Salin selepas log masuk

Pelanjutan ini membolehkan anda mengakses ahli struct tanpa nama melalui ahli tatasusunan, seperti dalam kod berikut:

<code class="c">Vector3 v;
assert(&v.xyz[0] == &v.x);
assert(&v.xyz[1] == &v.y);
assert(&v.xyz[2] == &v.z);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengumpul Struktur/Kesatuan Tanpa Nama dalam C dengan GCC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!