Błąd kompilacji C2143: syntax error: missing ')' before 'constant'

0

Witam, jestem początkującym programistą C++ i nie rozumiem trójki błędów, jaki wyrzuca mi kompilator (pracuje w środowisku Visual Studio 2005):

       error C2143: syntax error: missing ')' before 'constant'   
        error C2143: syntax error: missing ';' before 'constant'
         error C2059: syntax error: ')'

Miejsca, w których te błędy są wskazywane opatrzyłem komentarzem ERR:
Kod jest taki:

#include <iostream>
#include "stdfax.h"  //prekompilowany naglowek

#define rozmiar 10
using namespace std;

void setArray(int rozmiar);  // ERR

int _tmain(int arcs, _TCHAR* argv[])
{


   return 0;
}
void setArray(int rozmiar) // ERR
{
    float tablica[rozmiar];
    
    for(int i=0; i<rozmiar; i++)
        {
           cout << "Tab[" << i << "]= "<< endl;

        }

}

Póki co ten program kompletnie nic nie robi, ale zacząłem go kompilować, żeby zobaczyć, czy nie ma błędów, a jednak są i nie rozumiem o co dokładnie chodzi.

Wygooglowałem sobie te błędy i przejrzałem fora na te tamaty, ale kody z powyższymi błędami, zamieszczone na owych forach, były dla mnie zbyt nieczytelne i skomplikowane :(

Przepraszam za te cyfry "1." i "2." -w moim kodzie ich nie ma. Nie wiem, dlaczego tu się pojawiły

2

Bo nazwałeś zmienne tak jak makro. Define powoduje że WSZYSTKIE wystąpienia tego słowa w kodzie są zamieniane na wartość przed kompilacją. W efekcie każde twoje wystąpienie słowa "rozmiar" zamienia się na 10.
Masz przez to np:

void setArray(int 10);

i widzisz chyba że to coś dziwnego...

0

Dzięki za wyjaśnienie ;) Pozdrawiam

0

Ponadto ta część:

float tablica[rozmiar];

Jest błędna w przypadku C++, bo rozmiar nie jest wartością stałą.</del>
Jednak jest ok, mea culpa - źle spojrzałem na kod (gdyby rozmiar było parametrem, wtedy byłoby źle, ale skoro jest wartością stałą z #defineu, to jest okej :P).

1 użytkowników online, w tym zalogowanych: 0, gości: 1