Из стандарта C99, 6.7 (5):
Объявление определяет интерпретацию и атрибуты набора идентификаторов. Определение идентификатора - это декларация для этого идентификатора, которая: для объекта, заставляет хранилище быть зарезервированным для этого объекта; для функции включает тело функции; для константы перечисления или имени typedef, является (единственным) объявлением идентификатора.
Если идентификаторы с typedef
являются фактическими определениями, то почему их разрешено объявлять более одного раза? Пример:
int main()
{
typedef int x;
typedef int x;
}
Выше компилируется программа без ошибок. Как это возможно? Я ожидал, что программа даст мне ошибку с множественным определением.