[ Nameless One @ 27.11.2007. 13:46 ] @
Uvek kada include-ujem iostream u VS2005, dobijem grešku "error C2143: syntax error : missing ';' before 'namespace'". Počeo sam da sumnjam u sebe pa sam napisao sledeći test kod:

Code:

#include <iostream>
void main() {
    cout<<"Hello";
}


I opet dobijam: C:\Program Files\Microsoft Visual Studio 8\VC\include\iostream(12) : error C2143: syntax error : missing ';' before 'namespace'

Kada duplo kliknem na grešku šalje me u iostream file na liniju u kojoj je sam _STD_BEGIN, što bi trebalo da kompajler zameni sa "namepsace std;". Da li neko zna u čemu je problem?
[ glorius @ 27.11.2007. 15:25 ] @
Namespace ti je, kao sto i sama rec kaze, prostor imena. Koristi se da ne bi dolazilo do preklapanja globalnih promenljivih i imena klasa...

U iostream fajlu cout ( koji ti koristis i koji dovodi do greske, a videces posle zasto ) je globalna promenljiva definisana u prostoru imena zvanom std.

Code:


namespace std
{
     // ovde je definisan cout
     // ... ostale funkcije
}



Da bi ti pravilno radio program imas dva nacina:

Code:


1. nacin

#include <iostream>
using namespace std;  // ovako 'upadamo' u prostor imena

void main()
{

   cout << "Neshto";
}

2. nacin

#include <iostream>

void main()
{
     std::cout << "Opet neshto";   // explicitno pozivamo cout iz std prostora imena
}


[ Nameless One @ 28.11.2007. 15:38 ] @
Da, to sam zaboravio u ovom test primeru ali nije u tome problem. Imam "using namespace" u svim ostalim projektima. Dodao sam i u ovom, ovako:

Code:
#include <iostream>
using namepsace std;
void main() {
    cout<<"Hello";
}


i dalje imam istu grešku.

Probao sam i bez "using namespace" sa "std::cout" ali i dalje ne radi.

Sad sam nešto testirao i čini mi se da je greška u biblioteci istream. iostream ima "#include <istream>" pre "namespace std;". Probao sam čisto testa radi da uključim istream umesto iostream i dobijam grešku "error C2143: syntax error : missing ';' before 'using'", a "using namespace" je sledeće posle "#include <istream>". Ili ja radim nešto mnogo glupo ili je Microsoft uradio nešto još gluplje.
[ icobh @ 28.11.2007. 16:21 ] @
A ovako hoće:

Code:
#include <iostream>

using namespace std;

int main() {
    cout<<"Hello";
    return 0;
}
[ Nameless One @ 29.11.2007. 12:06 ] @
Neće. Opet ista greška.
[ icobh @ 29.11.2007. 18:25 ] @
Onda je definitivno do kompajlera. Ustvari, da li si pokušavao da napraviš kao prazan projekat ili si koristio nešto u smislu w32 ili ctl console application?
[ Nameless One @ 29.11.2007. 19:36 ] @
Uvek koristim "empty project". Probao sam i sa "win 32 console application" ali opet dobijam istu grešku.
[ Crazy shadow @ 30.11.2007. 11:26 ] @
Ja sam imao istih problema.
evo ovako trebas da uradis i mora da radi ako je sve ok.
File/New/Project/Win32 Console Application/next/Destikliraj precompiled header i stikliraj Empty project/Finish
/project/Add new item/C++ file(.cpp)
i onda
kod


Code:
#include<iostream>
using namespace std;
void main()
{
    cout<<"\nZdravo svete";
    system("PAUSE");
}

    

Ovo sam sad probao kod mene i radi..
[ Nameless One @ 01.12.2007. 00:53 ] @
Ne radi. Da ne poveruješ. Moraću ponovo da instaliram win, samo da mi se skine novi SUSE. Baš sam mislio da je neki poznatiji bug koji je neko već rešio ali izgleda da se ovakve stvari dešavaju samo kod mene :(
[ Nameless One @ 01.12.2007. 00:57 ] @
Da li može neko ko ima instaliran VS2005 da mi pošalje header istream? Znači "istream", ne "iostream". Hteo bih da uporedim sa mojim i možda nađem gde je greška i kako sam uspeo sa greškom da instaliram. Šaljite na "milos dot rasic at gmail dot com" ako forum ne podržava attachmente. Unapred hvala.
[ Tudfa @ 06.12.2007. 22:36 ] @
Citat:
Nameless One: Da, to sam zaboravio u ovom test primeru ali nije u tome problem. Imam "using namespace" u svim ostalim projektima. Dodao sam i u ovom, ovako:

Code:
#include <iostream>
using namepsace std;//treba namespace a ne namepsace
void main() {
cout<<"Hello";
}




Pogrešno si napisao rec namespace ... Kad pokrenem onako program dobijam istu grešku kao i ti , a sa "namespace" sve radi ...

I koliko ja znam main u c++ bi trebao pre da bude int nego void ...

Pozdrav
[ yaelo @ 06.12.2007. 23:15 ] @
Okači negde taj fajl koji ti pravi problem. Ne verujem da je problem do hedera. Ako je to problem reinstaliraj VS. Probaj rebuild. Probaj ovaj kod.

Code:
 
#include <iostream>
using namespace std;

int main()
{
    cout << "Hello world!" << endl;

    return 0;
}


Da li koristiš još neke fajlove u tom projektu? Neki header - stdafx.h ili imaš neki #include pre #include <iostream>?
Ako ništa ne radi okači negde zipovan projekat pa čemo da vidimo.
[ markozelenovic @ 25.01.2008. 18:37 ] @
Haaa, pa covek celo vreme pise "namepsace"... totalno se razvaljujem od smjeha
[ Nameless One @ 25.01.2008. 23:01 ] @
Baš mi je drago što si se tako lepo nasmejao, Marko.

btw, ako nekog zanima, reinstalirao sam Windows i VS i sada sve ok radi. Očigledno je problem bio u korumpiranoj instalaciji.
[ markozelenovic @ 16.02.2008. 21:12 ] @
Drago mi je sto ti radi!!!
[ tEsLa X @ 13.03.2008. 14:19 ] @
Meni se isti problem dešavao kada pri definisanju klase na kraju klase posle vitičaste zagrade ne stavim ;