View Full Version : migliori compilatori
ragazzi io ho Bloodshed Dev-C++...voi che ne dite? mi consigliate qualche altro programma?
scusatemi se ho detto boiate:D
Ziosilvio
26-12-2004, 12:51
C'è un elenco di compilatori nelle FAQ della sottosezione Tutorial.
Cmq, IMHO stai usando il meglio che c'è per imparare.
Fenomeno85
26-12-2004, 15:37
per imparare è + che sufficiente ;)
il migliore secondo me però rimane VC6 che compila tutto.
~§~ Sempre E Solo Lei ~§~
Originariamente inviato da Fenomeno85
per imparare è + che sufficiente ;)
il migliore secondo me però rimane VC6 che compila tutto.
~§~ Sempre E Solo Lei ~§~
Che io sappia basta dargli in pasto un pezzo di codice C99 e gia si rifiuta di compilarlo. Quindi non è proprio il massimo. Gcc su questo versante è molto meglio.
ciao ;)
Fenomeno85
26-12-2004, 20:17
Originariamente inviato da VICIUS
Che io sappia basta dargli in pasto un pezzo di codice C99 e gia si rifiuta di compilarlo. Quindi non è proprio il massimo. Gcc su questo versante è molto meglio.
ciao ;)
non so che sia :boh:
~§~ Sempre E Solo Lei ~§~
AnonimoVeneziano
26-12-2004, 21:26
Originariamente inviato da Fenomeno85
non so che sia :boh:
~§~ Sempre E Solo Lei ~§~
E' uno standard differente del C :D
Che a vic piace usare molto .
Ciao
VegetaSSJ5
27-12-2004, 11:31
ragazzi scusate se mi intrometto qui ma visto che si parla di C99...:D
un libro che ho descrive le differenze del C99 rispetto alla versione originaria. una di queste è che si può dichiarare una variabile nell'intestazione di un cclo for in questo modo:
for (int i=0; i<n; ++i)...
tuttavia nessun compilatore che ho provato io accetta questa sintassi (a dire il vero ho provato solo gcc e lcc... :D).
Cmq il messaggio di errore che mi viene restituito dal compilatore scrivendo una cosa del genere è più o meno il seguente: "Errore: la sintassi è del C99". Eppure altre features del C99 vengono implementate (come la dichiarazione delle variabili in qualsiasi punto di una funzione)...
Originariamente inviato da VegetaSSJ5
ragazzi scusate se mi intrometto qui ma visto che si parla di C99...:D
un libro che ho descrive le differenze del C99 rispetto alla versione originaria. una di queste è che si può dichiarare una variabile nell'intestazione di un cclo for in questo modo:
for (int i=0; i<n; ++i)...
tuttavia nessun compilatore che ho provato io accetta questa sintassi (a dire il vero ho provato solo gcc e lcc... :D).
Cmq il messaggio di errore che mi viene restituito dal compilatore scrivendo una cosa del genere è più o meno il seguente: "Errore: la sintassi è del C99". Eppure altre features del C99 vengono implementate (come la dichiarazione delle variabili in qualsiasi punto di una funzione)...
gcc come default usa lo standard ansi, quello vecchio. se vuoi usare C99 devi passare al compilatore -std=c99.
ciao ;)
fantoibed
27-12-2004, 18:22
Visual C++ .Net 2005 supporta C89, C++ e C# oltre ovviamente alla piattaforma .Net
Io lo uso (quasi) esclusivamente per codice C89 ed è molto meglio del Bloodshed. Ho scritto dei programmini che compilati con il DevCpp erano poco stabili mentre compilati con il VC++ andavano benissimo. Tenete conto che il DevCpp è basato sul mingw32 che è un porting su windows di un compilatore linux. Molto meglio, IMHO, usare i compilatori linux sotto linux e quelli per windows sotto windows... ;)
VegetaSSJ5
27-12-2004, 19:15
Originariamente inviato da fantoibed
Tenete conto che il DevCpp è basato sul mingw32 che è un porting su windows di un compilatore linux. Molto meglio, IMHO, usare i compilatori linux sotto linux e quelli per windows sotto windows... ;)
si ma, almeno io, non posso permettermi di comprare visual studio 2005 solo per compilare i miei stupidi programmini in c.
a proposito, ma è già uscito visual studio 2005?
fantoibed
27-12-2004, 19:34
Originariamente inviato da VegetaSSJ5
si ma, almeno io, non posso permettermi di comprare visual studio 2005 solo per compilare i miei stupidi programmini in c.
Se vuoi puoi usare il toolkit 2003 che è gratuito (senza ide):
http://msdn.microsoft.com/visualc/vctoolkit2003/
a proposito, ma è già uscito visual studio 2005?
No, ma ci sono le beta release scaricabili gratuitamente (per la versione express, non la pro) :
http://lab.msdn.microsoft.com/express/
VegetaSSJ5
27-12-2004, 20:21
Originariamente inviato da fantoibed
Se vuoi puoi usare il toolkit 2003 che è gratuito (senza ide):
http://msdn.microsoft.com/visualc/vctoolkit2003/
No, ma ci sono le beta release scaricabili gratuitamente (per la versione express, non la pro) :
http://lab.msdn.microsoft.com/express/
grazie! ottimo a sapersi! ora provo ad integrare il compilatore nell'ide dev-c++
VegetaSSJ5
27-12-2004, 21:01
come non detto: facile a dirsi, difficile a farsi.
così ho rinunciato per il momento ad integrare il compilatore microsoft con l'ide dev-c++. ho quindi provato ad utilizzare il compilatore microsoft da linea di comando, e non ci riesco nemmeno lì. Mi dice che non risce a trovare la libreria LIBC.lib (stesso errore anche su dev-c++). In effetti nella directory .../lib eiste un file di nome libc.lib. Ho provato a rinominarlo in maiuscolo ovvero in LIBC.lib ed ora il programma viene compilato ma quando lo eseguo non fa assolutamente nulla. Qualcuno mi sa dare una mano a compilare un hello world con questo compilatore??? E qualcuno è riuscito ad integrare questo compilatore in qualche ide (preferirei dev-c++ visto che ormai ci ho preso familiarità)???
fantoibed
27-12-2004, 21:06
Non uso il toolkit da parecchio tempo, ma mi pare che ci fosse un .BAT da chiamare per l'impostazione corretta del path. Ci dovrebbe essere anche un readme che spiega come impostare il tutto e ci sono alcuni programmini di esempio allegati. Inizia con il compilare quelli... :-)
VegetaSSJ5
27-12-2004, 21:24
ho riavviato il pc e ora funge.... :boh:
sarà anche vero che il compilatore è buono ma la microsoft non si smentisce mai...:rolleyes:
VegetaSSJ5
27-12-2004, 21:34
si, un hello world me lo ha compilato correttamente. ma provate a compilare questo file:
http://programmazione.html.it/c/esempio/rubrica.c
a me dev-c++ con gcc compila perfettamente e senza warning il file, provateci con questo toolkit della microsoft, dà errori a non finire. mah...:rolleyes:
fantoibed
27-12-2004, 22:07
Visto che me lo hai fatto venire in mente mi sto scaricando la beta del visual c++ 2005 express che è gratis (il secondo dei due links). L'installer è di 2.4Mb e l'installazione base (senza msdn) è di 80 mb. Poi ti faccio sapere come va.
VegetaSSJ5
28-12-2004, 13:37
enigma risolto. il compilatore microsoft non supporta il c99. quegli errori sono dovuti al fatto che vengono dichiarate delle variabili dopo altre istruzioni in una funzione.
a che pro la microsoft non ha implementato la sintassi del c99? secondo me è una grave mancanza...
fantoibed
28-12-2004, 14:19
Originariamente inviato da VegetaSSJ5
enigma risolto. il compilatore microsoft non supporta il c99. quegli errori sono dovuti al fatto che vengono dichiarate delle variabili dopo altre istruzioni in una funzione.
a che pro la microsoft non ha implementato la sintassi del c99? secondo me è una grave mancanza...
Avevo scritto anch'io che il visual c++ 2005 non supporta il c99 (e quindi nemmeno il toolkit 2003). Il motivo è spiegato nel sito della Microsoft tra le FAQ: nessuno degli sviluppatori ha richiesto tale feature... Boh, sarà! Io uso sempre il c89, ma mi sembra difficile che nessuno abbia richiesto la compatibilità con il c99. D'altra parte è anche vero che i compilatori Microsoft sono per ora gli unici a supportare il C# (C sharp) che è una specie di Java ma con caratteristiche OOP che il java se le sogna....
VegetaSSJ5
28-12-2004, 14:42
Originariamente inviato da fantoibed
Il motivo è spiegato nel sito della Microsoft tra le FAQ: nessuno degli sviluppatori ha richiesto tale feature...
:sbavvv: ma non hanno pensato al fatto che i programmatori non esistono soltanto all'interno della loro azienda?? e supponiamo che solo i programmatori microsoft possono ritenersi tali, che li vendono a fare i prodotti visual studio?? sono senza parole. Originariamente inviato da VegetaSSJ5
...la microsoft non si smentisce mai...:rolleyes:
Originariamente inviato da fantoibed
Avevo scritto anch'io che il visual c++ 2005 non supporta il c99 (e quindi nemmeno il toolkit 2003). Il motivo è spiegato nel sito della Microsoft tra le FAQ: nessuno degli sviluppatori ha richiesto tale feature... Boh, sarà! Io uso sempre il c89, ma mi sembra difficile che nessuno abbia richiesto la compatibilità con il c99. D'altra parte è anche vero che i compilatori Microsoft sono per ora gli unici a supportare il C# (C sharp) che è una specie di Java ma con caratteristiche OOP che il java se le sogna....
Mi pare impossibile che nessuno abbia mai richiesto il suppoto per c99. Evidentemente la mail che inviai qualche anno fa deve essere andata perduta :). Secondo me non volgiono supportare il nuovo standard semplicemente per sfruttare la loro posizione dominnate e favorire il loro C#.
In ogni caso non èvero che solo ms fa compilatori per C# c'è sempre mono per sistemi unix. http://www.mono-project.com/about/index.html
ciao ;)
fantoibed
28-12-2004, 18:40
Originariamente inviato da VICIUS
Mi pare impossibile che nessuno abbia mai richiesto il suppoto per c99. Evidentemente la mail che inviai qualche anno fa deve essere andata perduta :). Secondo me non volgiono supportare il nuovo standard semplicemente per sfruttare la loro posizione dominnate e favorire il loro C#.
Boh, questa è l'intervista a Lippmann:
http://www.codeproject.com/interview/stanlippman14nov2001.asp
Anche all'Univ del Colorado concordano con lui:
FAQ (http://web.uccs.edu/wbahn/ECE1021/STATIC/REFERENCES/FAQ.htm#What%20is%20C99%20and%20how%20does%20it%20affect%20this%20course)
In ogni caso la programmazione sotto windows dipende molto dalle API e dai framework a cui uno intende appoggiarsi, non dallo standard del linguaggio. In ogni caso, sapete che caratteristiche ha il C99 che al C89 mancano? Boh, cercherò su google...
{Aggiornamento} Ho trovato qui (http://en.wikipedia.org/wiki/C_programming_language#C99) dove si dice anche:
The latest revision of C, C99, created a number of conflicting features. The differences make it hard to write programs and libraries that are compiled and function correctly as either C or C++ code, and confuse those who program in both languages.
In ogni caso non èvero che solo ms fa compilatori per C# c'è sempre mono per sistemi unix. http://www.mono-project.com/about/index.html
Interessante!!! :!: Non lo conoscevo! :)
scusate ragazzi...ma sono un novello e...mi sono perso!:cry: :cry: :cry: :cry:
Originariamente inviato da NeoNum6
scusate ragazzi...ma sono un novello e...mi sono perso!:cry: :cry: :cry: :cry:
Scaricati il compilatore MInGW per windows, o un editor che lo integra come devCpp o MinGWDeveloperStudio
VegetaSSJ5
09-01-2005, 20:18
ragazzi scusate se scrivo qua, cmq ho una domanda da fare sul compilatore microtoft c++ toolkit 2003.
in pratica quando richiamo all'interno di un if(...) una funzione, cioè scrivo una cosa del tipo if (esiste(x)) il compilatore mi dà un warning che incollo qui:
prova.c(20) : warning C4711: function 'esiste' selected for automatic inline expansion
perchè mi dà quel warning??
P.S.
compilo sempre con un piccolo file bat che è questo "cl %1 /O2 /Og /G7 /GA /Wall"
fantoibed
09-01-2005, 23:46
Originariamente inviato da VegetaSSJ5
in pratica quando richiamo all'interno di un if(...) una funzione, cioè scrivo una cosa del tipo if (esiste(x)) il compilatore mi dà un warning che incollo qui:
prova.c(20) : warning C4711: function 'esiste' selected for automatic inline expansion
perchè mi dà quel warning??
Ti avverte che il compilatore ha deciso di espandere la funzione che si chiama esiste invece che chiamarla. Probabilmente è una funzione piccola e/o che è chiamata poche volte e il compilatore preferisce inserirla automaticamente all'interno della if anziché chiamarla....
Esempio stupido:
int esiste(void){ return 1; };
int main(){
//...
if (esiste()==1) {
printf("Bau");
}else{
printf("Miao");
}
return 0;
}
Invece che:
includelib stdlib
extrn printf
bau db "Bau",0h
miao db "Miao",0h
esiste:
mov eax,1h
ret
main:
call esiste
cmp eax,1h
jne mmm
push bau
call printf
jmp fine
mmm:
push miao
call printf
fine:
xor eax,eax
ret
Viene generato qualcosa di tipo:
includelib stdlib
extrn printf
bau db "Bau",0h
miao db "Miao",0h
main:
mov eax,1h ; <---- la funzione esiste viene inserita e non chiamata
cmp eax,1h
jne mmm
push bau
call printf
jmp fine
mmm:
push miao
call printf
fine:
xor eax,eax
ret
Ovviamente non è codice ottimizzato ma semplificato, tanto per far capire..... Comunque questo è l'inline expansion...
Se cerchi "inline expansion" su google, comunque, troverai di sicuro qualcosa... :)
Edit: correzioni successive effettuate su segnalazione di repne scasb
VegetaSSJ5
09-01-2005, 23:53
grazie fantoibed! infatti eccoti il codice del programma lo trovi in questo thread (è l'ultimo): http://forum.hwupgrade.it/showthread.php?s=&threadid=852969
repne scasb
09-01-2005, 23:57
fantoibed
10-01-2005, 00:02
Originariamente inviato da repne scasb
In entrambi i casi prima della label 'mmm' manca un "JMP" altrimenti nel caso di "bau" visualizzerai anche "miao".
Hai ragione, stò scrivendo sul portatile da sotto le coperte...
Il sonno gioca dei brutti scherzi....
Ora ho corretto! :)
PS: nel tuo avatar si nasconde un riddle, vero? Se ho tempo provo a risolverlo...
repne scasb
10-01-2005, 10:43
VegetaSSJ5
10-01-2005, 17:50
:eek:
fantoibed
15-01-2005, 14:32
Originariamente inviato da repne scasb
"Ormai sono alcuni anni che nel centro di ricerca di cui sono a capo sto lavorando ad un simulatore software reolitico per materiali sia viscoelastici e elastoplastici. Durante le ricerche sul simulatore mi sono accostata agli automi-cellulari per risolvere con approsimazioni successive alcuni aspetti del simulatore (lungo da spegare).
Conosco. In pratica io lavoro in un campo simile (simulazione termofluidodinamica). In TCFD esistono algoritmi basati su automi cellulari (si parla di "lattice gas" in quel contesto) ma io lavoro con lo schema più diffuso in quel settore: i volumi finiti. :)
Originariamente inviato da repne scasb
Nel mio avatar e' visibile (purtroppo si e' persa la natura binaria dell'automa-cellulare in quanto ho dovuto restringere la stessa da 64x64 pixel a 50x50 pixel)
<...snip...>
P.S. Per l'esattezza e' visibile nell'avatar il sorgente dell'automa-cellulare compresso dallo stesso automa-cellulare."
Carina l'idea. Peccato che il passaggio da 64x64 a 50x50 ne abbia un po' stravolto il senso... :)
Mi hai dato un'idea: appena ho un po' di tempo mi costruisco un avatar apparentemente normale ma con informazioni steganografate all'interno. Passando da 256 colori a 64 avrei 2bit di informazione per pixel: 50x50x2=5000bit=625 bytes di informazione. Può bastare per un messaggino...
io usavo all'inizio Turbo C++ 3.0 mitico programma in ambiente DOS, poi quando ho cominciato con i puntatori ho capito che aveva qualche problema a gestirli (tt documentato) quindi ora uso DevCpp 4.01 per compilare + Insight 5 per debuggare...quando faccio progetti + complessi uso C++BuilderX di borland (freeware)
quest'estate durante lo stage ho usato con estrema soddisfazione VC6 e VC.NET2003
PS non ho mai problemi di sintassi date che prefersico usare il C ANSI o il C++ ISO ;)
VegetaSSJ5
17-02-2005, 14:35
ho provato a compilare un file .c per win32. innanzitutto non era presente tra gli include il file windows.h ma con una ricerca su google sono riuscito a trovare la soluzione: scaricare il platform sdk della microsoft, installarlo e copiare il contenuto della cartella include nella cartella include del vc++ toolkit. quindi ho risolto quel problema, ora però mi dà un errore in fase di linking:prova.obj : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 refe
renced in function _WinMain@16
il programma in cui dà l'errore è semplicemente questo#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) {
MessageBox(0, "Hello, World!", "Messaggio al mondo", MB_OK);
return 0;
}
Devi linkare User32.lib ;)
Originariamente inviato da fantoibed
Visual C++ .Net 2005 supporta C89, C++ e C# oltre ovviamente alla piattaforma .Net
Io lo uso (quasi) esclusivamente per codice C89 ed è molto meglio del Bloodshed. Ho scritto dei programmini che compilati con il DevCpp erano poco stabili mentre compilati con il VC++ andavano benissimo. Tenete conto che il DevCpp è basato sul mingw32 che è un porting su windows di un compilatore linux. Molto meglio, IMHO, usare i compilatori linux sotto linux e quelli per windows sotto windows... ;)
E' un porting del gcc...ma più che porting pari pari qui si tratta proprio di un prodotto a se stante... Non a caso non si chiama gcc e non è GNU...
Io invece ti posso dire che è stabilissimo...non so che programma tu abbia compilato, ma sono convinto che magari in Visual C++ il problema ci fosse comunque, ma per qualche motivo legato alle differenze di traduzione non ti si presenti...o almeno non così spesso...
VegetaSSJ5
18-02-2005, 13:09
Originariamente inviato da cionci
Devi linkare User32.lib ;)
cionci come lo sapevi che dovevo linkare proprio User32.lib? non c'è un modo per linkare automaticamente questo file (a parte creare un .bat)??
Originariamente inviato da cionci
Devi linkare User32.lib ;)
Non c'entra niente; dovrebbe essere linkata già di per se' negli headers del Platform SDK.
Il problema è che per integrare il PSDK col Visual Studio 2005 Express non è così semplice, bisogna fare una cosa che non mi ricordo; una volta ci ero pure riuscito...
VegetaSSJ5
18-02-2005, 13:18
Originariamente inviato da 71104
Non c'entra niente; dovrebbe essere linkata già di per se' negli headers del Platform SDK.
invece era proprio quella, linkando quel file la compilazione termina con successo.
Originariamente inviato da VegetaSSJ5
cionci come lo sapevi che dovevo linkare proprio User32.lib? non c'è un modo per linkare automaticamente questo file (a parte creare un .bat)??
Diceva che non era riconsciuto il simbolo esterno MessageBoxA...quindi mancava una libreria...basta andare a vedere la funzione su msdn e ti dice la libreria da linkare...
Non uso il compilatore di VC da linea di comando quindi non ti so dire...
Riguardo al fatto che venga linkata automaticamente...credo proprio di no...anche VC++ in un progetto per Windows mette di default alcune lib da linkare nella lista delle lib da lnkare...e fra queste c'è user32...
Originariamente inviato da VegetaSSJ5
invece era proprio quella, linkando quel file la compilazione termina con successo.
hmmm, hai ragione; allora evidentemente quella volta che ero riuscito ad integrare il PSDK devo aver fatto qualcosa percui i programmi venivano linkati automaticamente a user32.lib, kernel32.lib, gdi32.lib, ecc.
Originariamente inviato da cionci
Riguardo al fatto che venga linkata automaticamente...credo proprio di no...anche VC++ in un progetto per Windows mette di default alcune lib da linkare nella lista delle lib da lnkare...e fra queste c'è user32...
veramente io quella volta ci ero riuscito :p purtroppo non mi ricordo esattamente cosa andava fatto, ma credo che bisognasse andare tra le opzioni dell'IDE, per la precisione su quelle delle directory, selezionare l'insieme delle directory dove l'IDE deve cercare le librerie, e aggiungere la dir dove si trovano le librerie standard del PSDK.
[OT] colgo il 3d per aggiungere qualche mio parere su Visual C++ 2005 Express: il fatto che non ci sia il PSDK di default è abbastanza scomodo, ma si rimedia; l'IDE è molto leggero e ha una grafica accattivante, tuttavia io preferisco la versione 6.0 perché il 2005 mi sembra troppo concentrato sul development di applicazioni .NET, che a me non interessano minimamente (e infatti è proprio questa la ragione della mancanza del PSDK). Inoltre la 6.0 mi piace di + anche perché lo considero uno strumento tanto basilare quanto potente, senza troppi fronzoli, e con un buon compilatore.
E a proposito di compilatori, un mio amico dice di aver provato il compilatore Intel, e dice che è ottimo: si interfaccia direttamente con l'IDE del VC6 (cosa comodissima) e i programmi che genera sono più veloci, e pure di tanto! L'ha usato per ricompilare un prog. OpenGL fatto da lui, ed è stato costretto a modificare i parametri e renderlo + lento perché andava troppo veloce!!! Voi ne sapete qualcosa? La conoscete questa meraviglia?
Originariamente inviato da fantoibed
Avevo scritto anch'io che il visual c++ 2005 non supporta il c99 (e quindi nemmeno il toolkit 2003). Il motivo è spiegato nel sito della Microsoft tra le FAQ: nessuno degli sviluppatori ha richiesto tale feature... Boh, sarà! Io uso sempre il c89, ma mi sembra difficile che nessuno abbia richiesto la compatibilità con il c99. D'altra parte è anche vero che i compilatori Microsoft sono per ora gli unici a supportare il C# (C sharp) che è una specie di Java ma con caratteristiche OOP che il java se le sogna....
mi potresti fare un esempio della programmazione OO che possiede il C# che java non ha?
fantoibed
19-02-2005, 16:17
Originariamente inviato da akyra
mi potresti fare un esempio della programmazione OO che possiede il C# che java non ha?
L'overloading degli operatori, ad esempio.
Esiste in C++ e C# ma non in Java.
La derivazione multipla esiste in C++ e non esiste in Java; non so se esiste in C#.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.