Parse error before '{'

C/C++

1 svar · 394 visningar · startad av LilleSkutt

Medlem sedan feb. 2001265 inlägg
Trådstart#1

Felmeddelandet ovan får jag där jag har följande kod:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
char c[4][4] = {
{'a','b','c','d'},
{'d','c','b','a'},
{'c','d','a','b'},
{'b','a','d','c'}
};

Jag får också varningar om "warning: address of local variable 's' returned"
Det tolkar jag som att addressen till strängen returneras? Koden jag får felmeddelandet på ser ut så här:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
void abc(const char* a) {

char s[strlen(a) + 1]; <-- Här får jag felet
// MER KOD HÄR EGENTLIGEN
}

Vad beror dessa felmeddelanden på?

Medlem sedan apr. 20002 487 inlägg
#2

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
char s[strlen(a) + 1]; <-- Här får jag felet

Det där funkar liksom inte. När du skapar en array så måste kompilatorn veta hur stor arrayen skall vara vid kompileringen. När du gör sådär så kan inte kompilatorn veta hur stor den skall göra arrayen, eftersom värdet av strlen(a) kan variera (det som står innom [ ] måste vara konstant). Nåt sånt här borde funka:

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
char *s = malloc(sizeof(char) * strlen(a) + 1));
if(s == NULL) return -1;

298 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
153 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
154 ms — ändringar (db)