Я пробовал следующий код
#include <stdio.h>
int main(void)
{
typedef static int sint;
sint i = 10;
return 0;
}
и нажмите следующую ошибку:
error: multiple storage classes in declaration specifiers
Когда я ссылался на спецификацию C99, я узнал, что typedef
является storage class
.
6.7.1 Storage-class specifiers
Syntax
storage-class-specifier:
typedef
extern
static
auto
register
Constraints: At most, one storage-class specifier may be
given in the declaration specifiers in a declaration
Semantics: The typedef specifier is called a ‘‘storage-class specifier’’
for syntactic convenience only;
Единственное объяснение, которое я смог найти (основанный на некотором интернет-поиске и перекрестке, ссылающийся на различные разделы в спецификации C99) был syntactic convenience only to make the grammar simpler
.
Я ищу какое-то обоснование/объяснение того, как имя типа может иметь спецификатор класса хранения?
Не имеет смысла иметь такой код, как typedef static int sint;
?
или Где я ошибаюсь?!