Search code examples
ccurly-bracesstatic-initializer

C code involving {}


I saw this in some C code:

Wininfo W = { sizeof(Wininfo) };

What the heck does this mean?


Solution

  • This code is initializing a struct using funky C initializer syntax to initialize each field in order of declaration, see http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=421. An important side-effect in the case of this example is that remaining fields one doesnt specify values for get initialized to zeros.

    This trick is a relatively common one in Win32 APIs - the API requires the size to be pre-set as a way of indicating the version the client code is compiled against - in many of these cases, one is also expected to clear the buffer, which would ordinarily involve a separate call to e.g. memset prior to initializing the size field with the sizeof.

    See also Struct initialization of the C/C++ programming language? for related examples