My understanding of the C language is that the same identifier cannot be reused. However, the code below compiles on GCC without complaints, even when using the "-Wall -pedantic" flags. Is there something that I am missing? Does the standard say anything about functions/macros having the same name as typedef'd types?
#include <stdio.h>
typedef int error;
#define init() error var_error = -6
#define error() ((const error)var_error)
int main(void)
{
init();
printf("error() = %d\n", error());
return 0;
}