Quote:
Originally Posted by xNopex
Das return würde wegen der Endlosschleife eh vom Compiler wegoptimiert werden. Mir gehts eher darum, dass in deiner Argumentation keine klare Linie zu erkennen ist. Auf der einen Seite argumentierst du, dass void main in C++ schlechter Stil sei bzw. nach dem Standard ungültig ist. Auf der anderen Seite sagst du, es ist völlig legitim bei Microcontrollern o.ä. in C++ int main zu verwenden, obwohl das aus der Sicht eines Systems ohne OS völliger Schwachsinn ist und undefiniert ist! Es macht einfach keinen Sinn, so wie void main wenig Sinn für Plattformen mit OS macht. Dass beides mehr oder weniger funktioniert steht außer Frage. Ich sehe aber keine logische Konsequenz, dass du das eine für völlig oke hälst, wohingegen das Andere für dich ein No-go ist.
|
Dann hast du es nicht so mit der Logik.
Das eine ist einfach nur unter Umständen unnötig und deshalb in den Augen von C Opas oder in deinen unschön/schlechter Stil
Zitier mich, wo ich void main als unschön bezeichne. Es ist falsch, Punkt aus Ende.
Deshalb sehe ich es als NoGo. Klar, indirekt könnte man sagen, es ist unschön, weil ja auch standardkonformes Programmieren nur ein Leitsatz für guten Stil ist, aber dann kann man sowieso jeglichen Syntaxfehler nur als unschön bezeichnen, weil man könnte ja einfach einen Compiler schreiben, der den Standard nicht so ganz eng sieht.
Gäbe es für Microcontroller eine Regelung, dass hier void main gestattet ist, würde ich es auch nicht so verurteilen. Und nein, das ist für mich kein Grund, C vorzuziehen.
Quote:
|
Es hängt doch von der Plattform ab. void main ist anscheinend unter C++ "falsch". Daran erkennt man doch auch, dass bei der Entwickklung der Sprache das primäre Ziel Plattformen mit einem OS waren. Es ist schlicht falsch und undefiniert auf einer Plattform ohne OS irgendetwas an irgendjemanden zurückzugeben. An wen denn?
|
Undefiniert? Nein. Schlimmsten Falls wird er ignoriert, es passiert also nichts (ist nop für dich auch undefiniert?), wie eine Zuweisung an sich selbst oder der Aufruf einer Funktion mit Rückgabetyp ungleich void, deren Rückgabewert man aber nicht speichert.
Falsch ist es erst recht nicht.
Außerdem muss man nicht zwingend OS Anwendungen schreiben, sondern auch Funktionen mit einem anderen Einstiegspunkt. Der C++ Standard schreibt nur vor, dass man über die Main den Status des eigenen Programms zurückgeben kann (was eigentlich jedes System, nicht nur ein OS, verwerten sollte). 0 steht allgemeinhin für den erfolgreichen Ablauf und wenn dem Chip das egal ist, dann ist es ihm halt egal, deshalb ist es kein Grund, C++ nicht dafür zu verwenden.
Man hielt eine feste Regel int wohl einfach für sinnvoller, das macht C++ nicht ungeeigneter für Microcontroller.
Quote:
|
stimme xNopex zu, verschiedene programmiersprachen sind für unterschiedliche dinge gut, C++ ist nicht (perfekt) dazu ausgelegt ein betriebssystem zu programmieren, torvalds hat dazu glaub ich auch schonmal gesagt, dass C++ für betriebssystemprogrammierung ungeeignet ist, wofür er heftig kritisiert wurde (von leuten die kein os geschrieben haben ).
|
Komische Sache, man kann also ein OS damit entwickeln, obwohl es doch nur für Anwendungen, die auf einem OS laufen, geeignet sein soll, weil dem BIOS der return Wert der main auch völlig egal ist?
Dat Logik.
Man kann ein OS in C++ wunderbar entwickeln und es ist dafür nicht schlechter geeignet als C und ja, ich habe es auch schon getan (natürlich nicht im großen Maßstab).
Außerdem hat C++ genau wie C und alle anderen nicht nur ein einziges Anwendungsgebiet (OS Programmierung, lol. Macht man ja so oft), sondern mehrere und das ist für C++ genau so wie für C unter anderem auch Microcontrollerprogrammierung.
Ob es diese nostalgischen C Opas nun einsehen wollen oder nicht.
Nicht umsonst fokusiert sich Microsoft immer mehr auf OOP als auf C.
Ich denke damit hats sich, klarer kann man sich nicht mehr ausdrücken und das ganze wird mir nun zu ot.
Ich werde bei Zeit nochmal eine seperate Diskussion dazu aufmachen, weil mir dieses engstirnige Anti-C++-Für-Hardware Denken langsam auf den Sack geht.