Problem med felmedelande från C-kompilator
Postat: 22 oktober 2013, 11:02:54
Jag har ett problem att förstå varför jag får fel på det här C-exemplet
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.
Kod: Markera allt
//---------------------------------------------------------------------------
// Clear vector
//---------------------------------------------------------------------------
void ClearVect(unsigned char (*ParmVect)[], unsigned char NumElements)
{
unsigned char i;
for(i = 0; i < NumElements; i++)
ParmVect[i++] = 0;
}
//---------------------------------------------------------------------------
// Main
//---------------------------------------------------------------------------
int main(int argc, char *argv[])
{
unsigned char (*TestVect1)[10];
unsigned char (*TestVect2)[20];
ClearVect(TestVect1, 10);
ClearVect(TestVect2, 20);
return 0;
}
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.