Мне известны два возможных способа определения и использования struct
s:
#1
struct person
{
char name[32];
int age;
};
struct person dmr = {"Dennis Ritchie", 70};
#2
typedef struct
{
char name[32];
int age;
} person;
person dmr = {"Dennis Ritchie", 70};
Интересным свойством первого способа является то, что и тип, и переменная могут иметь одно и то же имя:
struct person person = {"Sam Persson", 50};
Это идиоматика в C? Гарантированно ли работает на C ++? Или есть какие-то угловые случаи, о которых мне следует знать?
Обратите внимание, что меня не интересуют ответы на чистом C ++ (например, «используйте std :: string
вместо char [32]
] "). Это вопрос о совместимости C / C ++.