Felmeddelandet är "invalid use of array with unspecified bounds" i GCC och "Size of the type 'unsigned char[]' is unknown or zero" i Borland C++ Builder.
Själva felmeddelandet i sig är ju fullt förståligt när man har en tvådimensionell array och där den ena arraystorleken behöver vara dimensionerad för att kunna räkna offseten in i arrayen. Men i det här fallet så är det en pekare till en vektor av byte och där borde det inte behöva vara några problem. Man vill kunna skicka in olika vektorer som parameter. Jag förstår inte orsaken till felet i det här fallet. Självklart vill jag kunna skicka in vektorer med olika antal element och så länge storleken på själva elementet (unsigned char) är fast och känd, så tycker jag inte det borde vara några problem.
Det är sant att man ju faktiskt kan skriva det som en pekare istället. Men jag tycker det är tydligare att skriva det som en vektor i dom fall det faktiskt är det. Så en normal kompilator klarar alltså inte av att "inse" att det faktiskt inte behöver vara angivet på en endimensionell array som egentligen motsvarar en enkel pekare...
Det trodde jag faktiskt att det skulle fixas iom att det är livärdigt med en pekare. Så länge som inte den storleken verkligen behövs för att beräkna elementets placering så skulle det ju varit likvärdigt.
Nu är det alldeles för länge sen jag höll på aktivt med C, men man kan väl normalt aldrig skicka med en array som parameter till en funktion?
Jag har för mig att det just var en sån där "fälla" som man lätt gick i, man trodde man skickade den som parameter (som blir en lokal variabel i funktionen), men det man skickar är en pekare så man modifierar funktionens argument utanför funktionen så att säga?
Normalt så trycks väl alla argument till en funktion in på stacken innan funktionen anropas, och just därför måste storleken vara känd. (Och just därför blir det pekare till arrays.)
variabel är väl samma sak som *(&variabel+i*sizeof(datatyp)) så det är fullt logiskt att ta det som en pekare.