# C-Editor und C-Compiler



## Java Student (26. Mrz 2006)

Hi 

ich suche einen guten C-Editor und Compiler für WinXP. Wenn möglich in Deutsch, muss aber nicht sein.


Mfg


----------



## Beni (26. Mrz 2006)

Ich benutze DevC++, der ist angenehm klein und auch frei zu haben. Ob er sich für grössere Projekte eignet, vermag ich aber nicht zu sagen.


----------



## 0xdeadbeef (26. Mrz 2006)

Zunächst mal:
http://www.bloodshed.net/devcpp.html

Und ist nicht Visual C Express auch frei?
http://msdn.microsoft.com/vstudio/express/visualc/


----------



## byte (26. Mrz 2006)

0xdeadbeef hat gesagt.:
			
		

> Und ist nicht Visual C Express auch frei?



Jup, is frei.


----------



## paedubucher (26. Mrz 2006)

Es gibt für Eclipse auch C/C++ Plugins. Wenn du Eclipse onehin schon nutzt, dann ist das für dich sicherlich komfortabel.


----------



## Dukel (27. Mrz 2006)

Es gibt noch CodeBlocks. Einfach mal danach Googlen.


----------



## Guest (27. Mrz 2006)

Danke für eure Vorschläge.
Ich hab DevC++, Visual C Express und eclipse runtergeladen, und teste jetzt mal, was mir am besten gefällt.

Mfg


----------



## JAVA und C++ User (15. Mai 2006)

Vergiss DevC++ der is nur zum Lernen gut. Codeblocks ist da besser es dauert aber noch ne Weile bis zum nächsten Release. Finger weg von Eclipse und C++ kannste in die Tonne treten. Visual 2005 Express ist die beste Wahl für Dich, wunderbar schnell und unterstützt den Standard wunderbar und erzeugt schöne Binärys. Eine HelloWorld.exe mit 5 KB ist doch was oder????


----------



## norman (15. Mai 2006)

JAVA und C++ User hat gesagt.:
			
		

> Vergiss DevC++ der is nur zum Lernen gut. Codeblocks ist da besser es dauert aber noch ne Weile bis zum nächsten Release. Finger weg von Eclipse und C++ kannste in die Tonne treten. Visual 2005 Express ist die beste Wahl für Dich, wunderbar schnell und unterstützt den Standard wunderbar und erzeugt schöne Binärys. Eine HelloWorld.exe mit 5 KB ist doch was oder????


seit wann hängt die applikationsgröße denn mit dem entwicklungstool zusammen?  :autsch:


----------



## 0xdeadbeef (15. Mai 2006)

Na ja, wenn alles in den 'zig Megabyte großen .NET Libraries steckt, dann ist die Exe natürlich klein. MFC kann man ja meines Wissens mit der kostenlosen Version von VisualC nicht mehr benutzen, geschweige denn statisch reinlinken.
Für kleine _autarke_ Windowsprogramme ist VisualC daher wohl eher nicht mehr geeignet.
In der Tat ist aber DevC++ auch nicht der wahre Jakob. Ich benutze es nur, wenn ich ab und zu mal ein kleines Konsolenprogramm in C schreibe/pflege. Da wäre VisualC mit Atomraketen auf Spatzen geschossen.


----------



## C++ schreiber (15. Mai 2006)

0xdeadbeef hat gesagt.:
			
		

> Na ja, wenn alles in den 'zig Megabyte großen .NET Libraries steckt, dann ist die Exe natürlich klein. MFC kann man ja meines Wissens mit der kostenlosen Version von VisualC nicht mehr benutzen, geschweige denn statisch reinlinken.
> Für kleine _autarke_ Windowsprogramme ist VisualC daher wohl eher nicht mehr geeignet.
> In der Tat ist aber DevC++ auch nicht der wahre Jakob. Ich benutze es nur, wenn ich ab und zu mal ein kleines Konsolenprogramm in C schreibe/pflege. Da wäre VisualC mit Atomraketen auf Spatzen geschossen.



nene, die paar KB für ne HelloWorld EXE ist ohne .NET. Wir sprechen hier auch von C und nicht C++ oder C#.


----------



## 0xdeadbeef (15. Mai 2006)

Dann verstehe ich Deine Argumentation erst recht nicht. Habe vor zwei Wochen oder so mal wieder was in C gemacht und ein Programm mit 650 Zeilen - was ja doch etwas mehr ist als "Hello World" - braucht gerade mal 26kB als DevC++-Compilat (alles auf default). Ich wage jetzt mal zu bezweifeln, daß es mit VisualC wesentlich kleiner wird, wenn man alles statisch linkt - theoretisch kann man ja auch die C-Runtime als Dll benutzen. Eine ältere und einfachere Version des gleichen Programms war jedenfalls mit VisualC 7.0 kompiliert noch 44kb groß.

Davon abgesehen sind die Zeiten eh vorbei, in denen mir einer abgegangen ist, wenn mein Programm in ein KB gepaßt hat. In Zeiten von 250GB-Festplatten, 6MBit-DSL-Anschlüssen und 2GB RAM habe selbst ich alter Bitschinder es aufgegeben, auf ein paar KB zu schauen.

Was C++ angeht, ist der GCC (und damit DevCPP) halt bei höchster Optimierung sehr lahm beim Kompilieren - speziell wenn man noch sehr viel mit Templates arbeitet - und der erzeugte Code ist auch nicht so gut wie der von VisualC. Wobei sich da vielleicht mit dem neuesten GCC was getan hat - meine Erkenntnisse diesbezüglich sind schon etwas älter.

Also ich persönlich würde für komplexere C++-Programme bzw. solche mit Windows-Oberfläche VisualC nehmen und für kleine Konsolenprogramme in C den DevC++.


----------



## Strichaaa (15. Mai 2006)

Ich würde dir auf jedenfall empfehlen KEINEN C++ Compiler zu benutzen!
Die sind nämlich nicht sehr effizient, was C-Code angeht, oder zumindest sind C-Compiler effizienter.

Visual C++ ist zwar professionell, aber für plattformunabhängiges Programmieren kann man ihn afaik vergessen. Außerdem ein C++ Compiler ^^ Visual C (wie einige meiner Vorredner behaupteten) gibt es afaik nicht. Und Microsoft Produkte sind sowieso für ihr Widerstreben gegen Standart bekannt. Er kann zwar afaik den Standart, aber unterstützt auch alle anderen, üblen Stile.

Gnu ist gut, aber nimm dann auch den Gcc und nicht den G++, sonst haste wieder en C++ Compiler. 

Ansonsten kann ich dir noch lccwin32 wärmstens empfehlen, damit hab ich meine ersten Schritte getan und fand ihn auch immer total cool! Irgendwann bin ich dann auf C++ gewechselt. Für den Download einfach mal googlen.


----------



## 0xdeadbeef (15. Mai 2006)

Strichaaa hat gesagt.:
			
		

> Ich würde dir auf jedenfall empfehlen KEINEN C++ Compiler zu benutzen!
> Die sind nämlich nicht sehr effizient, was C-Code angeht, oder zumindest sind C-Compiler effizienter.


Das halte ich persönlich für Quatsch. C++ hat einen gewissen Overhead, wenn man Features wie Polymorphismus nutzt. Aber warum sollte ein C++-Compiler grundsätzlich schlechteren Code erzeugen?



> Visual C++ ist zwar professionell, aber für plattformunabhängiges Programmieren kann man ihn afaik vergessen. Außerdem ein C++ Compiler ^^ Visual C (wie einige meiner Vorredner behaupteten) gibt es afaik nicht. Und Microsoft Produkte sind sowieso für ihr Widerstreben gegen Standart bekannt. Er kann zwar afaik den Standart, aber unterstützt auch alle anderen, üblen Stile.


Ohne jetzt auf Haarspaltereien und die Beharrlichkeit einzugehen, das einfache Wort "Standard" falsch zu schreiben: speziell die letzte Version erfüllt den ISO/Ansi-Standard vollständig. Es gibt allerdings ein paar Erweiterungen gegenüber dem Standard. Ob man das als positiv oder negativ wertet, sei mal dahingestellt. Jedenfalls ist das sicher kein Grund, den Compiler zu meiden. Und warum man mit dem MS Compiler grundsätzlich weniger gut plattformunabhängig programmieren können soll, wird wohl auch ein Rätsel bleiben. Wenn man z.B. Qt verwendet oder Konsolenprogramme schreibt, ist der Compiler völlig schnurz.
Nicht, daß ich jetzt unbedingt ein Gates-Fanboy bin - aber Ablehnung aus rein ideologischen Gründen mit Scheinargumenten zu untermauern, kann es ja auch nicht sein.



> Gnu ist gut, aber nimm dann auch den Gcc und nicht den G++, sonst haste wieder en C++ Compiler.


Bei einem normalen Aufruf entscheidet das der GCC ohnehin anhängig von der Endung automatisch.
Ansonsten siehe oben.




> Ansonsten kann ich dir noch lccwin32 wärmstens empfehlen, damit hab ich meine ersten Schritte getan und fand ihn auch immer total cool! Irgendwann bin ich dann auf C++ gewechselt. Für den Download einfach mal googlen.


Nichts gegen den LCC, aber ein einzelner Entwickler kann halt nicht so ganz gegen riesige Mannschaften anderer Compiler anstinken. Außerdem macht er ja auch noch die IDE inklusive Ressourceneditor. Letztlich ist keines der Teile des Pakets so richtig zeitgemäß. Der Editor bzw. die IDE ist sogar ziemlich schrecklich aus heutiger Sicht. Das Projekt hat ja auch schon ein paar Jahre auf dem Buckel ohne nennenswerte Erweiterungen. Ich fürchte aber auch, daß der Compiler bereits gegen ältere Versionen von GCC alt aussieht, von Microsofts oder Intels Compilern wollen wir da mal lieber gar nicht anfangen.


----------



## Strichaaa (17. Mai 2006)

0xdeadbeef hat gesagt.:
			
		

> Das halte ich persönlich für Quatsch. C++ hat einen gewissen Overhead, wenn man Features wie Polymorphismus nutzt. Aber warum sollte ein C++-Compiler grundsätzlich schlechteren Code erzeugen?



Dann kannst du mir ja sicher erklären, warum z.B. Programmierer in der Autoindustrie C benutzen und kein C++ und mir von eben diesen Entwicklern gesagt wurde, dass sie es machen, weil C-Compiler den Code effektiver umwandeln als C++-Compiler? Es ist bei Hardware naher Programmierung eben ein Unterschied, ob du 3 Zeilen Assembler am ende da stehen hast oder 30. Von mir kannst du meinetwegen behaupten, dass ich wenig Ahnung habe, aber von beruflichen Programmierern, die bei einer angesehenen und erfolgreichen Firma arbeiten... ich weiß nicht, wem soll man denn noch glauben, wenn nicht solchen Programmierern?




			
				0xdeadbeef hat gesagt.:
			
		

> speziell die letzte Version erfüllt den ISO/Ansi-Standard vollständig.



Ja, stimme ich dir zu, wobei ich das "speziell" weglassen würde und ich hab es ja auch geschrieben. Es geht mir nur darum, dass ich es nach wie vor blöd finde, dass ein void main(void) überhaupt zugelassen wird. Egal, ob int main(int argc, char* argv[]) auch funktioniert oder nicht, ich mag es nicht, wenn Programmierer gegen den Standart verstoßen. Wofür gibt es sonst solche Standarts? Dann kann man sie auch gleich weglassen! Sobald void main(void) von ANSI zum Standart erhoben wurde, da es so oft benutzt wird, bin ich zwar mit dieser Entscheidung nicht ganz einverstanden, jedoch werde ich nichts mehr gegen die Codezeile sagen. 



			
				0xdeadbeef hat gesagt.:
			
		

> Es gibt allerdings ein paar Erweiterungen gegenüber dem Standard.


Naja, wenn der Standart etwas völlig anderes vorschreibt, ist es für mich keine Erweiterung, sondern ein Verstoß.



			
				0xdeadbeef hat gesagt.:
			
		

> Nichts gegen den LCC, aber ein einzelner Entwickler kann halt nicht so ganz gegen riesige Mannschaften anderer Compiler anstinken. Außerdem macht er ja auch noch die IDE inklusive Ressourceneditor. Letztlich ist keines der Teile des Pakets so richtig zeitgemäß. Der Editor bzw. die IDE ist sogar ziemlich schrecklich aus heutiger Sicht. Das Projekt hat ja auch schon ein paar Jahre auf dem Buckel ohne nennenswerte Erweiterungen. Ich fürchte aber auch, daß der Compiler bereits gegen ältere Versionen von GCC alt aussieht, von Microsofts oder Intels Compilern wollen wir da mal lieber gar nicht anfangen.



Naja, ich fand ihn immer Klasse, muss aber zugeben, dass ich ja schnell auf C++ gewechselt bin, von daher war es im Prinzip nur ein erster Eindruck... nichts desto trotzt wird er bei mir wieder installiert werden, denn ich werd wegen hardwareproggen wieder auf C umsteigen ^^


----------



## AlArenal (17. Mai 2006)

Strichaaa hat gesagt.:
			
		

> 0xdeadbeef hat gesagt.:
> 
> 
> 
> ...



Ich kenne persönlich kein Auto, das von einem 'normalen' PC mit 'normalem' Betriebssystem gesteuert wird und bei den in Autos eingesetzten Mikrocontrollern mag es derzeit gut möglich noch so sein, dass die Compiler für C besser optimieren, weil kaum einer C++ nutzt und da entsprechend herstellerseitig weniger getan wird. Analog dazu hält sich im wissenschaftlichen Bereich bei Großrechnern hartnäckig Fortran, weil die Libararies und Compiler jahrzehntelange Detailarbeit und Optimierung hinter sich haben.

Nur kannst du die Hardware in einem PKW und dessen Anforderungen und Rahmenbedingungen nicht mit denen eines normalen PC gleichsetzen.


----------



## Strichaaa (17. Mai 2006)

Bei Autos liegt das nicht nur (oder überhaupt nicht? so genau weiß ich es nicht) an der Optimierung, oder dass dafür nicht so viel getan würde, sondern eher an zwei anderen Gründen: Bei den bisherigen Leistungen der Compiler bräuchte man schnellere Prozessoren und afaik größere Speicher, was insgesamt nur unnötig Geld kosten würde. Außerdem will auch niemand wirklich C++ einsetzten, das die zusätzlichen Features wie z.B. OOP in der Hardware Programmierung nicht wirklich zum Einsatz kommen (würden) und nicht gebraucht werden.




			
				AlArenal hat gesagt.:
			
		

> Nur kannst du die Hardware in einem PKW und dessen Anforderungen und Rahmenbedingungen nicht mit denen eines normalen PC gleichsetzen.



Habe ich das getan? "Java Student" hat folgende Frage gestellt:



			
				Java Student hat gesagt.:
			
		

> Hi ich suche einen guten C-Editor und Compiler für WinXP. Wenn möglich in Deutsch, muss aber nicht sein. Mfg



Daraus kann man leider nicht entnehmen, für was er Programmieren will, und da er offensichtlich Student ist, ist es angesichts der Tatsache, dass er nicht nach C++ sondern nach C fragt, durchaus vorstellbar, dass er nicht FÜR Windows, sondern nur AUF Windows entwickeln möchte. FÜR was er entwickeln möchte, steht da nicht, und da C für Windows-Anwendungen eher selten benutzt wird, seit es C++ gibt, kann man auch auf die Idee kommen, dass er vielleicht für andere Dinge programmieren möchte. 

Immerhin steht da, dass der Compiler für WinXP sein soll, das heißt für mich nur, dass es ein Compiler sein soll ,der auf Windows XP läuft. Das tun aber Compiler für Hardwareprogrammierung auch.


----------



## 0xdeadbeef (17. Mai 2006)

> Dann kannst du mir ja sicher erklären, warum z.B. Programmierer in der Autoindustrie C benutzen und kein C++ und mir von eben diesen Entwicklern gesagt wurde, dass sie es machen, weil C-Compiler den Code effektiver umwandeln als C++-Compiler? Es ist bei Hardware naher Programmierung eben ein Unterschied, ob du 3 Zeilen Assembler am ende da stehen hast oder 30. Von mir kannst du meinetwegen behaupten, dass ich wenig Ahnung habe, aber von beruflichen Programmierern, die bei einer angesehenen und erfolgreichen Firma arbeiten... ich weiß nicht, wem soll man denn noch glauben, wenn nicht solchen Programmierern?


Du kennst solche Programmierer und ich _bin_ einer  Und in der Tat benutzen wir da immer noch C. Würde nicht der Trend auf Kundenwunsch in eine andere Richtung gehen (modellbasierte Entwicklung), wäre es aber langsam an der Zeit, C gegen C++ zu tauschen, um zumindest einige Features zur Kapselung zu benutzen. Würde es nach mir gehen, hätten wir das schon vor ein paar Jahren gemacht: ich persönlich hätte es aber im wesentlichen bei der Verwendung von Klassen zur Kapselung gelassen und das kostet erstmal nichts. Setter/Getter kann man ja inline machen - kostet also auch nix. Als Bonus könnte man eine wesenltich strukturiertere Dokumentation machen, zumal Tools wie Doxygen eigentlich für OO gedacht sind.

Außerdem habe ich die Frage ja schon beantwortet: es geht nicht darum, welchen Compiler man verwendet, sondern welche Features man nutzt. Man kann in C++ ein Programm in reiner C-Syntax schreiben und über viele Zwischenstufen schließlich astreines OO-C++. Je nachdem ist der Overhead durch C++-Features größer oder kleiner - aber nicht weil der Compiler schlechter wäre.




> Ja, stimme ich dir zu, wobei ich das "speziell" weglassen würde und ich hab es ja auch geschrieben. Es geht mir nur darum, dass ich es nach wie vor blöd finde, dass ein void main(void) überhaupt zugelassen wird. Egal, ob int main(int argc, char* argv[]) auch funktioniert oder nicht, ich mag es nicht, wenn Programmierer gegen den Standart verstoßen. Wofür gibt es sonst solche Standarts? Dann kann man sie auch gleich weglassen! Sobald void main(void) von ANSI zum Standart erhoben wurde, da es so oft benutzt wird, bin ich zwar mit dieser Entscheidung nicht ganz einverstanden, jedoch werde ich nichts mehr gegen die Codezeile sagen.


Mir ging es um vollständige Erfüllung des neuesten C++-Standards und da würde ich jetzt mal behaupten, daß viele Versionen davor den Standard nicht 100% umgesetzt haben. Ist halt auch etwas komplexer als der C-Standard.



> Naja, wenn der Standart etwas völlig anderes vorschreibt, ist es für mich keine Erweiterung, sondern ein Verstoß.


Nein. 100%ige Erfüllung des Standards heißt nur, daß er vollständig umgesetzt wurde. Erweiterungen sind legitim, insbesondere wenn man sie abschalten kann. Wenn Du schon die Automobilindustrie anführst: praktisch jeder C-Compiler für Microcontroller hat Erweiterungen über den IOS/ANSI-Standard hinaus. Muß er teils auch haben (z.B. Bittypen bei C167 usw.). Trotzddem ist er natürlich standardkonform, solange er den Standard 100% umsetzt. Wir haben auch Compiler, die das nicht tun (für Peripherieprozessoren). Auch die haben ihre Berechtigung, nur kann man mit denen halt nicht alle zwingend vorgeschriebenen Sprachkonstrukte benutzen.



> ... nichts desto trotzt wird er bei mir wieder installiert werden, denn ich werd wegen hardwareproggen wieder auf C umsteigen ^^


C hat durchaus noch seine Berechtigung, vor allem im Embedded-Bereich. Auch Linus Torvalds zieht im Linux-Kernel ja C vor. Es gibt aber halt auch schwere Defizite in C: mich hat immer am meisten gestört, daß die Fehlerbehandlung ohne Exceptions ein Graus ist und daß es C schlicht an dynamischen Datentypen fehlt. Sachen wie Funktionen zum Anlegen und Sortieren von Listen praktisch immer neu schreiben. Auch Sachen wie Oberflächen sind ohne OO ziemlich schrecklich zu programmieren.
Habe aber wie gesagt auch noch ein paar olle C-Programme, an denen ich hier und da rumbastle. Für dieses Zwecke fand ich den DevC++ wesentlich besser als LCCWin. CodeBlocks sieht aber auch sehr gut aus - zumindest auf den Screenshots sieht der Editor etwas ausgereifter aus als der etwas primitive Editor von DevC++. Bin halt inzwischen von Eclipse verwöhnt.


----------

