У меня есть .c файл, который я пытаюсь скомпилировать в VS2012, но я получаю эту ошибку:C2059 в VS2012: Как инициализировать экземпляр структуры?
error C2059: syntax error : '.' main.c
Согласно тому, что я прочитал это конкретная проблема с VS2012 компилятора, который я выиграл» t работать с другими компиляторами. Независимо от того, действительно ли это, я надеюсь, что кто-то здесь может сказать мне, как исправить эту ошибку компилятора. Как изменить код так, чтобы компилировать код и поведение было одинаковым?
Это то, что у меня в файле заголовка:
struct mystruct
{
struct someOtherStruct obj2;
void* ptr1;
void* ptr2;
void* ptr3;
};
И это то, что я имею в main.c
void* P1 = NULL;
void* P2 = NULL;
void* P3 = NULL;
/* VS2012 complains about this syntax */
static struct mystruct obj =
{
.ptr1 = P1,
.ptr2 = P2,
.ptr3 = P3,
};
void main(void)
{
/* Empty for now */
}
с использованием имен элементов при инициализации struct является особенностью «последней» версии C. Кажется, компилятор C немного отстает от времени, поскольку он не распознает последний синтаксис, поэтому используйте старый синтаксис, как показано @Praetorian. Более старый синтаксис по-прежнему поддерживается всеми компиляторами C. – user3629249