Я искал ответ в 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
)