https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100939
--- Comment #1 from johnfbennett at protonmail dot com --- G++ does have a good warning for this scenario: $ g++ -Wall misplacedattribute.c misplacedattribute.c: In function ‘int main()’: misplacedattribute.c:7:37: warning: attributes ignored on elaborated-type-specifier that is not a forward declaration [-Wattributes] 7 | struct __attribute__((__unused__)) samplestruct samplestruct; | ^~~~~~~~~~~~ misplacedattribute.c:7:50: warning: unused variable ‘samplestruct’ [-Wunused-variable] 7 | struct __attribute__((__unused__)) samplestruct samplestruct; | ^~~~~~~~~~~~