Инициализация статической структуры с помощью тегов в C ++

Я искал ответ в stackoverflow, но не могу найти что-то подходящее.

I ' m пытается инициализировать экземпляр статической структуры с начальными значениями, указав их теги, но я получаю сообщение об ошибке во время компиляции:

src / version.cpp: 10: error: ожидаемое первичное выражение перед '.' token

Вот код:

// h
typedef struct
{
    int lots_of_ints;
    /* ... lots of other members */
    const char *build_date;
    const char *build_version;
} infos;

И ошибочный код:

// C

static const char *version_date = VERSION_DATE;
static const char *version_rev  = VERSION_REVISION;

static const infos s_infos =
{
   .build_date    = version_date, // why is this wrong? it works in C!
   .build_version = version_rev
};

const infos *get_info()
{
    return &s_infos;
}

Итак, основная идея состоит в том, чтобы обойти инициализацию «других элементов» и установить только соответствующие build_date и build_version значений. Раньше это работало на C, но я не могу понять, почему это не работает на C ++.

Есть идеи?

edit :

Я понимаю, что этот код выглядит как простой C, и это действительно так. Весь проект написан на C ++, поэтому я должен использовать расширения файлов C ++, чтобы предотвратить беспорядок с зависимостями make-файла (%. O:% .cpp )

6
задан Gui13 26 April 2011 в 12:55
поделиться