Jag har ett litet problem, eller inte ett problem mer en fundering; jag har en array som jag deklarerar utan storlek, sen en bit efter det vill jag sätta in värden i den.
Tex:
Bestäm dig för hur stor arrayen ska/får vara när du deklarerar den. Det är det absolut smidigaste sättet. Jag antar att det är för en µC du programmerar.
Om di vill hålla det enkelt så måste du, precis som cykze skriver, ange arrayens storlek när den deklareras. Ett annat alternativ är att använda funktionen malloc() för att dynamiskt skapa ett minnesområde (googla för mer info)... malloc används flitigt i "vanliga datorer" med gott om minne, kan vara rätt farligt i en uC! Det är FÅ gånger som man INTE vet hur stort något i en uC kommer att vara...
oJsan har rätt men jag vill kraftigt avråda från att använda malloc i µC-miljö!
Är det så att man inte vet hur stor variabeln blir kan man reservera den maximala storleken och fila på det senare.
Se det som en bil: du beställer en bil hos förhandlaren och när du ska hämta den 2 veckor senare klämmer du fram att det var en lastbil du ville ha. Sånt säger man till om INNAN man hämtar bilen eller hur?
Det samma gäller för kompilern: du måste berätta hur många bytes du vill ha innan du kan få dom.
Icecap> Varför vill du "kraftigt avråda" från att använda malloc i µC-miljö?
Om man deklarerar den på stacken kommer den ju flörmodligen att leva jämt och ta upp massa onödigt minne. Deklarerar du den med malloc på heapen kommer den (förhoppningsvis) bara att finnas då den behövs.
Det är ju onödigt att kategoriskt säga att malloc inte ska användas. Klart man ska använda det!
I en PIC eller liknande storlek är det sinnessjukt att använda malloc, helt enkelt för att det förbrukar onödiga resurser. Har man ett antal Kbyte kan det vara vettigt att använda malloc, men det är för att man har resurserna till det.
Själv kör jag mitt största programmeringsprojekt till inbyggnad helt utan malloc, allt har sin plats, det finns ingen okända faktorer och då ser jag ingen anledning till att använda malloc.
g_lcd.c:551: error: `data' undeclared (first use in this function)
g_lcd.c:551: error: (Each undeclared identifier is reported only once
g_lcd.c:551: error: for each function it appears in.)
Är det inte så att du har deklarerat en lokal data[] innanför varje {} scope i switch casen?
Deklarera en data[] (med angiven storlek) ute i samma scope där du har anropet istället, alltså i LCD_Write_Char()'s {}.
Då syns den variabeln även i alla funktioner som anropas från den funktionen.
Men, jag är färgad av många års meck i Perl, så det här kanske inte gäller i C utan är bara en egenskap i Perl.