Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

21.08.2014, 21:24

Es wird sich hier sehr wahrscheinlich um Bequemlichkeit handeln. Es sei aber erwähnt, dass es auch heutzutage Situationen gibt, wo inline tatsächlich ein wesentlicher Performancefaktor sein kann. Unter Toolchains wie MSVC, die Global Program Optimization betreiben, ist dies zwar eher nicht der Fall, aber z.B. unter CUDA kann ein ungünstiger non inlined Function Call an falscher Stelle einem das Genick brechen...

idontknow

unregistriert

22

22.08.2014, 08:55

Was bringt Include Guards / #pragma once eigentlich genau, wenn es genau das Problem nichtmal behebt? Ich meine das ist auch sowas was mich immer wieder mal stört.. die includes in C++ sind wirklich grausam.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

23

22.08.2014, 09:24

Was bringt Include Guards / #pragma once eigentlich genau, wenn es genau das Problem nichtmal behebt? Ich meine das ist auch sowas was mich immer wieder mal stört.. die includes in C++ sind wirklich grausam.

Include Guards schützen davor das ein Header mehrmals in einer Übersetzungseinheit includiert wird. Alles was nicht über die Grenze der Übersetzungseinheit einzigartig sein muss, ist damit geschützt: Deklarationen, Templates etc.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

22.08.2014, 10:22

Was bringt Include Guards / #pragma once eigentlich genau, wenn es genau das Problem nichtmal behebt? Ich meine das ist auch sowas was mich immer wieder mal stört.. die includes in C++ sind wirklich grausam.

Include Guards schützen davor das ein Header mehrmals in einer Übersetzungseinheit includiert wird. Alles was nicht über die Grenze der Übersetzungseinheit einzigartig sein muss, ist damit geschützt: Deklarationen, Templates etc.

Der Vollständigkeit halber: Deklarationen im Allgemeinen können ruhig mehrfach vorkommen; Definitionen sind das Problem, insbesondere Klassendefinition... ;)

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

25

22.08.2014, 12:01

Was ich hier schon wieder los getreten habe:) Hier war es natürlich ( ;) ) einfach Faulheit. Ich habe aber glaube ich auch im ersten Beitrag geschrieben, dass es nur Übergangscode ist. Ich habe mir mittlerweile bei privaten Projekten angewöhnt erst mal Features zu implementieren und dabei nicht 100% auf Sauberkeit zu achten. Wenn es dann läuft wird es gesäubert und eingebaut. Dieser Workflow hat sich bei mir ganz gut bewährt. Natürlich hätte ich hier einfach direkt eine CPP-Datei anlegen können und das Problem wäre beseitigt gewesen. Mir ging es einfach darum wissen zu wollen wie man das Problem anders löst. Habe lange nichts mit C++ gemacht und die letzten Dinge waren auch ziemlich kleine Dinge. Davor habe ich mit C++ entwickelt als mir einiges an theoretischem Wissen gefehlt hat. Freie Funktionen hatte ich damals glaube ich nie in Projekten. Außer vielleicht in denen die nur aus einer Seite bestanden. Wie auch immer. Hier ging es einfach um Übergangsfaulheit. Den Workflow muss man nicht mögen und ihr dürft gern alle anders arbeiten, aber wie gesagt bei mir gehts so schneller als vorher zu viel zu planen und direkt auf alles zu achten.
Aber mal allgemein. Hier wird ja oft Anfängern zu C++ geraten und dann wenn die wilden Sprachdiskussionen losgehen heißt es C++ sei genau so simpel wie Sprache XYZ, nur dass hier eben Zeiger vorhanden sind. Jetzt nehmen wir einfach mal dieses Problem hier. Weiterhin gibts ja noch mehr Probleme durch include. Hinzu kommt das Problem mit den Templates und cpp-Dateien welches schon erwähnt wurde und zig andere Dinge die in C++ doch erst mal verwunderlich und nicht ganz einfach sind. Klar sind das alles keine Probleme mehr wenn man genug Erfahrung hat. Wenn ich aber vergleiche wie leicht mir damals der Umstieg von C++ auf C#, Java, Python und Co gefallen ist. Und wenn ich dann gucke wie viele Probleme ich jetzt kriege wenn ich wieder mit C++ arbeite, dann sehe ich da das Problem bei der Komplexität und der Maschinennähe von C++. Ich will hier keine Diskussion losbrechen von wegen Sprache XYZ ist die tollste. Die meisten die ein wenig nachdenken werden ja auch schnell feststellen das es keine beste Sprache gibt und die Umstände und Anforderungen eine Große Rolle spielen. Aber vielleicht denkt man bei der nächsten Empfehlung an einen Neuling einfach daran wie viele Probleme man bei C++ kriegen kann, vor allem als Anfänger der sich noch nicht auskennt. Ihr dürft natürlich auch weiterhin C++ vorschlagen. Ob aus anderen Gründen, oder weil ihr mir in diesem Fall hier einfach nicht zustimmt.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige