Встроенная инициализация массива - PullRequest
0 голосов
/ 29 января 2019

У меня есть такая структура:

struct Foo {
    int a;
    int* b;
};

Затем я создаю для него экземпляр, например:

int x [] = { 5, 6 };
Foo y = { 2, x };

Но я бы хотел создать xвстроенный массив, может быть что-то вроде этого:

struct Foo y = { 2, (int[]) { 5, 6 } };

Но приведенный выше пример не работает ... Как мне этого добиться?

--------- РЕДАКТИРОВАТЬ:

Я получаю эту ошибку от intellisense:

приведение к неполному типу массива "int []" не разрешено

Ошибка сборки:

Ошибка C4576, заключенный в скобки тип, сопровождаемый списком инициализатора, является нестандартным явным синтаксисом преобразования типа

Я использую Visual Studio 2015 (v140).

1 Ответ

0 голосов
/ 29 января 2019

В вашем случае Foo не является типом.

Попробуйте

struct Foo y = { 2, (int[]) { 5, 6 } };

Работает, как и ожидалось


Редактировать:

Вам нужно только free() память, программно выделяемую с помощью функции распределителя (malloc() и семейства).Память, которая не возвращается функцией распределения, не должна быть free() -d программистом.


Edit 1:

Относительно C4567, см. Это

...