Newsgroup: it.comp.lang.c
Titolo: strano errore di compilazione

Ciao a tutti,
Sto facendo delle prove con dei programmini davvero semplici, sono
all'inizio...
pero' non capisco proprio che vuol dire questo errore di compilazione:
Fatal F1003 ..\include\stdcomp.h 5: Error directive: Must use C++ for
STDCOMP.H
gli ho dato questo comando:
bcc32 --I..\Include -L..\Lib -e..\Source\prova.exe ..\Source\prova.c
il sorgente:
#include <iostream.h>
main () {
 cout << "se mi vedi funziona";
 return(0);
}
... il bello è che questo errore me lo da se uso cout... se includo stdio.h
e uso printf() ottengo in pratica lo stesso risultato e funziona. ma a me
interesserebbe sapere perchè cout e l'inclusione di iostream.h mi danno sto
errore visto che il manuale che sto leggendo ha voglia di usare cout :-(
help
Alex

errore visto che il manuale che sto leggendo ha voglia di usare cout :-(
cout non e' C, ma C++
Il file lo chiami prova.C, quindi dici al compilatore che e' un
sorgente C (non C++ nota bene), poi usi librerie e sintassi C++...
ovvio che si arrabbi :)
-- 
Mox

 ovvio che si arrabbi :)
uh! non sapevo che il compilatore si attaccasse al nome del file! cmq
rinominando il file in prova.cpp e cambiando la riga di comando in:
bcc32 -L..\Lib -I..\Include -e..\Source\prova.exe ..\Source\prova
FUNZIONA! :-)
grazie per avermi illuminato!
Ciao
Alex

grazie per avermi illuminato!
Attenzione!!!
Il C e' il C++ sono diversi per vari aspetti e non e' nemmeno corretto
dire che il C e' un sottoinsieme del C++ (come aveva detto qualcuno in
un posto precedente), ma ci sono delle parti del C non coperte dal C++
(diciamo tutte quelle in cui si lasciava piu' liberta' al
programmatore).
Tutto il codice C puo' essere compilato dal compilatore C++ attraverso
la direttiva "extern" (il come non e' argomento di questo NG), ma per
compilarlo con il compilatore C++ senza questa direttiva sara'
senz'altro necessaria un opera di reingegnerizzazione.
Il codice C++ invece quasi certamente non andra' con un compilatore C
perche' ci sono troppe diversita' che non si limitano solo alla
programmazione a oggetti (che non ti sto a elencare perche' finiamo OT
e soprattutto sarebbe lungo).
Tanto per farti un esempio delle differenze, nel tuo codice ci sono 3
errori (per essere codice C ovviamente):
- includi librerie che non esistono
- usi l'operatore << che non esiste
- usi i canali di IO che in C non esistono
-- 
Mox

programmazione ad oggetti...
Non solo, ma comunque "cout" (o meglio, std::cout), in C++,
e' un oggetto.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

programmatore).
Credo di essere il colpevole dell'affermazione cui ti riferisci.
Parli del fatto che il C++ ha un maggior controllo sui tipi?

Parli del fatto che il C++ ha un maggior controllo sui tipi?
Beh, in sostanza l'unica incompatibilita' sta' li, se escludi la
sintassi pre-ansi che non viene supportata e alcune features
scarsamente usate anche in C (come dichiarare le struct al volo
durante il passaggio di parametri).
Un'altra cosa che non puoi fare (ma che e' strettamente connesso a
quanto appena detto) e' passare un intero come valore per un
enomerato.
Puo' essere che il post fosse tuo, ma non ho voglia di andarlo a
cercare :)
(rif. [Strousctrup], 3^a ed.,  appendice B)
-- 
Mox