[C] warning: ISO C90 forbids variable length array
Ostatnio zmodyfikowano 2013-12-24 23:06
DejaVu |
» 2013-12-24 13:34:31 Wiersz nr. 6 w tym kodzie to #define, a jeżeli dobrze rozumiem Twój log kompilacji, to właśnie w wierszu nr. 6 zgłoszony został błąd.
int( * obraz_pgm )[ wobr->wymx ];
To wygląda jak rzutowanie na int-a i próba odczytania z niego elementu o indeksie [wobr->wymx] :) |
|
pekfos |
» 2013-12-24 13:39:09 To wygląda jak rzutowanie na int-a i próba odczytania z niego elementu o indeksie [wobr->wymx] :) |
W zasadzie jest to definicja wskaźnika na tablicę dwuwymiarową. |
|
quatromen Temat założony przez niniejszego użytkownika |
» 2013-12-24 13:40:33 to chyba musi być |
|
DejaVu |
» 2013-12-24 13:46:14 No ale właśnie w tym miejscu dostajesz 'błąd', ponieważ wobr->wymx nie jest stałą, która byłaby znana podczas kompilacji aplikacji. |
|
Elaine |
» 2013-12-24 13:49:39 Dodaj do opcji kompilacji -std=c99 i kompilator przestanie ostrzegać. |
|
quatromen Temat założony przez niniejszego użytkownika |
» 2013-12-24 13:50:53 To nie wiem, skoro wymx jest zadeklarowane w strukturze a wobr wskazuje na to wymx :/ |
|
DejaVu |
» 2013-12-24 13:52:47 wymx to zmienna, a skoro jest to zmienna to musisz/powinieneś dynamicznie alokować pamięć. |
|
quatromen Temat założony przez niniejszego użytkownika |
» 2013-12-24 14:00:10 czyli jęsli dobrze rozumiem to zamiast deklarowania wymx jako zmienna statyczna muszę zrobić z niej zmienna dynamiczną za pomocą : int * wymx; wymx =( int * ) malloc( sizeof( int ) );
i na koncu oczywiscie zwolnienie pamieci ?? ?? ?? |
|
1 « 2 » 3 |