static struct fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
我不明白C語法。我甚至無法搜索,因爲我不知道語法的名字。那是什麼?dot(。)在結構體初始值設定項中的含義是什麼?
static struct fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
我不明白C語法。我甚至無法搜索,因爲我不知道語法的名字。那是什麼?dot(。)在結構體初始值設定項中的含義是什麼?
這是一個C99功能,允許您在初始化程序中通過名稱設置結構的特定字段。在此之前,初始化程序需要按順序包含所有字段的值,當然這仍然有效。
所以以下結構:
struct demo_s {
int first;
int second;
int third;
};
...您可以使用
struct demo_s demo = { 1, 2, 3 };
...或:
struct demo_s demo = { .first = 1, .second = 2, .third = 3 };
...甚至:
struct demo_s demo = { .first = 1, .third = 3, .second = 2 };
...雖然最後兩個僅適用於C99。
這些是C99的designated initializers。
其已知爲designated initialisation
(參見Designated Initializers)。一個「初始化列表」,每個「.
」是 「designator
」在這種情況下名 「fuse_oprations
」結構的特定成員初始化爲通過 的「hello_oper
」標識符所指定的對象。
它看起來像一個結構初始值設定項。 – Mysticial
在C99中進行了標準化,所以如果你有一個(真的)舊的編譯器,就不會工作。 –
終於找到了這個鏈接:http://stackoverflow.com/questions/330793/how-to-initialize-a-struct-in-ansi-c – Mysticial