написание кода структуры, работающего как на C, так и на C ++

Мне известны два возможных способа определения и использования 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 ++.

5
задан fredoverflow 29 October 2011 в 08:59
поделиться