I find your statement puzzling. A GNU extension is by definition not “strictly valid C”, compound literals are valid C because they are defined in C99.
Compound literals are valid C; compound statements, used in the macros in the article, are a GNU extension.