W języku C zdefiniowałem strukturę widoczną poniżej i chciałbym ją zainicjować inline. (Ani pola wewnątrz struktury, ani tablica nie będą się zmieniać po inicjalizacji). Kod w pierwszym bloku działa dobrze.C - deklarowanie tablicy int wewnątrz struct
struct Foo {
int bar;
int *some_array;
};
typedef struct Foo Foo;
int tmp[] = {11, 22, 33};
struct Foo foos[] = { {123, tmp} };
Jednak tak naprawdę nie potrzebuję pola tmp. W rzeczywistości po prostu zaśmieje mój kod (ten przykład jest nieco uproszczony). Zamiast tego chciałbym zadeklarować wartości some-array wewnątrz deklaracji dla foos. Nie mogę jednak uzyskać właściwej składni. Być może pole some-array powinno być zdefiniowane inaczej?
int tmp[] = {11, 22, 33};
struct Foo foos[] = {
{123, tmp}, // works
{222, {11, 22, 33}}, // doesn't compile
{222, new int[]{11, 22, 33}}, // doesn't compile
{222, (int*){11, 22, 33}}, // doesn't compile
{222, (int[]){11, 22, 33}}, // compiles, wrong values in array
};
Musisz przydzielić pamięć dla * some_array używając funkcji malloc lub calloc. – user1929959