Темный угол с `typedef` в C / C ++? - PullRequest
0 голосов
/ 07 декабря 2018

Я недавно нашел Темные углы C / C ++: ключевое слово typedef не обязательно должно быть первым словом в строке , и он был удивлен, зная, что все выглядят странно *Все приведенные ниже 1005 * s действительны как на C, так и на C ++:

int typedef a;
short unsigned typedef b;

Вышеуказанные typedef s эквивалентны:

typedef int a;
typedef short unsigned b;

И следующие вещи недопустимы в C ++но допустимо в C:

typedef enum { c };
typedef;
typedef int;
typedef int short;

По каким причинам разработчики языка оставили этот темный угол живым в C и C ++?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Думаю, главное сохранить совместимость со старыми программами и библиотеками.Их много.

0 голосов
/ 07 декабря 2018

Может быть, это то же правило, что и для cv модификаторов = модификатор применяется:

  • к первой вещи слева
  • или еслипусто, на вещь справа

Как и cv модификаторы (псевдоним const volatile и mutable), я думаю, typedef следует тому жеПравило.

const относится к тому, что от него осталось.Если слева ничего нет, то это относится к вещам справа от него.

...