static struct fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
Saya tidak memahami sintaks C ini dengan baik. Saya bahkan tidak bisa mencari karena saya tidak tahu nama sintaksnya. Apa itu?
c
c99
designated-initializer
Benjamin
sumber
sumber
Jawaban:
Ini adalah fitur C99 yang memungkinkan Anda untuk mengatur bidang tertentu dari struct dengan nama di penginisialisasi. Sebelum ini, penginisialisasi hanya perlu berisi nilai, untuk semua bidang, secara berurutan - yang tentu saja masih berfungsi.
Jadi untuk struct berikut:
...kamu bisa memakai
...atau:
...atau bahkan:
... meskipun dua yang terakhir hanya untuk C99.
sumber
struct demo_s demo = { .first = 1, .first = 9 };
Di salah satu GCC saya, ini akan dikompilasi tanpa peringatan dan yang pertama adalah 9.Ini adalah penginisialisasi khusus C99 .
sumber
Ini dikenal sebagai
designated initialisation
(lihat Penginisialisasi yang Ditunjuk ). Sebuah "daftar-penginisialisasi", Setiap '.
' adalah "designator
" yang dalam hal ini menamai anggota tertentu darifuse_oprations
struct ' ' untuk menginisialisasi objek yang ditunjuk olehhello_oper
pengenal ' '.sumber
Seluruh sintaks dikenal sebagai penginisialisasi yang ditunjuk sebagaimana telah disebutkan oleh COD3BOY dan digunakan secara umum ketika Anda perlu menginisialisasi struktur Anda pada saat deklarasi ke beberapa nilai tertentu atau default.
sumber