What does this dot syntax mean in the Pebble watch development tutorial?

440 views Asked by At

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.

2

There are 2 answers

0
2501 On BEST ANSWER

This is standard c99.

It is combining compound literals

 (WindowHandlers) {}

and designated initializers

.load = main_window_load,
.unload = main_window_unload
1
Basile Starynkevitch On

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"