This question already has an answer here:
I came across following code in Pebble watch app development tutorial:
// Set handlers to manage the elements inside the Window
window_set_window_handlers(s_main_window, (WindowHandlers) {
.load = main_window_load,
.unload = main_window_unload
});
I cant understand this assignment to .load and .unload. Is this standard C? I don't think I have ever seen similar syntax before.
This is standard c99.
It is combining compound literals
(WindowHandlers) {}
and designated initializers
.load = main_window_load,
.unload = main_window_unload
I believe it is standard C99, with an initialized struct
constant with named fields in its initialization.
BTW, it is also a C extension -w.r.t. older C standards- (designated initializers) provided by GCC
For C11 standard, its final draft n1570 describes that syntax in "§6.7.9 Initializations"
来源:https://stackoverflow.com/questions/26949319/what-does-this-dot-syntax-mean-in-the-pebble-watch-development-tutorial