error: duplicate 'unsigned'

仕事で stdint.h 内部の typedef でコンパイルエラーになる謎報告があった。ログから推測して以下のような状況だったのだと思う。

#define uint32_t unsigned int

typedef unsigned int uint32_t;

.cpp ならば、

test.cpp:3: error: duplicate 'unsigned'
test.cpp:3: error: multiple types in one declaration
test.cpp:3: error: declaration does not declare anything

.c ならば、

test.c:3: error: duplicate 'unsigned'
test.c:3: error: two or more data types in declaration specifiers
test.c:3: warning: useless type name in empty declaration