static struct fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
このC構文はよくわかりません。私は構文の名前を知らないので検索することすらできません。あれは何でしょう?ドット(。)は構造体イニシャライザで何を意味しますか?
static struct fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
このC構文はよくわかりません。私は構文の名前を知らないので検索することすらできません。あれは何でしょう?ドット(。)は構造体イニシャライザで何を意味しますか?
これは、イニシャライザで構造体の特定のフィールドを名前で設定できるようにするC99の機能です。この前に、イニシャライザはすべてのフィールドの値だけを順番に格納する必要がありました。
したがって、次の構造体のために:
struct demo_s demo = { .first = 1, .second = 2, .third = 3 };
...かさえ:
struct demo_s {
int first;
int second;
int third;
};
...あなたは
struct demo_s demo = { 1, 2, 3 };
...またはを使用することができます
struct demo_s demo = { .first = 1, .third = 3, .second = 2 };
...最後の2つはC99のみです。
これらは、C99のdesignated initializersです。
designated initialisation
として知られています(Designated Initializers参照)。 「初期リスト」は、それぞれ「.
」は、この場合名に 「fuse_oprations
」構造体の特定のメンバーが 「hello_oper
」識別子によって指定されたオブジェクトのために初期化する 「designator
」です。
構造体の初期化子のようです。 – Mysticial
C99で標準化されているので、(実際には)古いコンパイラを使用していると動作しません。 –
最後にこれに関するリンクが見つかりました:http://stackoverflow.com/questions/330793/how-to-initialize-a-struct-in-ansi-c – Mysticial