[so] problema VMChecker g++, pe parser/UseParser.cpp

Adrian Scoica adrian.scoica at gmail.com
Wed Mar 9 16:40:15 EET 2011


[pana iti raspunde cineva din echipa SO]

2011/3/9 Alexandru Goia <goia.alexandru.linux at gmail.com>

> UseParser.cpp:18: error: 'stderr' was not declared in this scope
> UseParser.cpp:18: error: 'fprintf' was not declared in this scope
>
>

> M-am uitat pe sursa UseParser.cpp, care se compileaza fara probleme pe G++
> - ul meu,
> si apare linia : using namespace std;
>

fprintf si stderr nu fac parte din namespace-ul std::
Tot codul mostenit din C e declarat in spatiul global de nume (altfel nu ai
putea compila cod pur C in C++).


> Nu ma prind unde apare problema.
>

Deoarece iti zice ca simbolurile sunt nedefinite, inseamna ca nu ai inclus
<cstdio>. Pentru functii (sau clase, desi nu e cazul), poti sa le scrii
forward declaration de mana in sursa (ceea e foarte urat). Pentru constante
nu ai cum sa faci asta daca nu le incluzi intr-o clasa.

Sau, poti sa incluzi header-ul, cum ar trebui de fapt.


> O solutie rapida ar fi sa modific sursele parserului, sa includ <cstdio> in
> UseParser.cpp,
> dar cum pe masina mea nu am avut probleme cu sursele parserului, vreau sa
> nu modific sursele
> parserului.
>

Cum ai compilat pe masina la tine? Daca ai scris sursele intr-un IDE
(eclipse, mai ales), unele headere se includ din oficiu (cstdio este un
exemplu) in functie de setarile proiectului.

Oricum, de ce ai vrea sa iti includa preprocesorul automat niste headere
daca tu nu le scrii explicit in sursa?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20110309/293b0120/attachment.htm>


More information about the so mailing list