Ihr Elenden Perversen! Haltet euch an den Standard!
-
dot:
Ansichtssache.Fragen wir mal so:
Was würdest Du in einem Tut von dem Du denkst, das es ein "Professionelles Einsteiger Tutorial" ist, am liebsten sehen und was nicht?main () { } int main (void) { return 0; } int main (int argc, char *argv[]) { return 0; }
oder
#include <iostream.h> #include <stdio.h> #include <math.h> #include <assert.h> // als #include <iostream> #include <cstdio> #include <cmath> #include <cassert>
sowie:
#define __MAX_TYPES_FIGHTERS 100 // als const int MAX_TYPES_FIGHTERS = 100; // bzw. enum MAX_TYPES { FIGHTERS = 100, NONE = 0 };
oder Wunderbare #define Makros die man mit Templates ersetzen könnte!
Ich könnte die Liste noch weiterführen, doch ich bin mal so sozial und lass es.
Ich denk mal Du würdest es am liebsten richtig haben, als Bullshit vor der Nase zu haben, welches Du lernst.
-
Das mit den Defines, etc. ist aber Stilsache und hat imho wenig mit dem Standard zu tun.
MfG SideWinder
-
Mag sein, aber ich bin mir relativ sicher, das Du es mit const oder enum regeln würdest! Und das aus gutem Grund! Da der Compiler niemals __MAX_TYPES_FIGTHERS zu "sehen" bekommt, sondern nur den Wert!
Nebenbei das __ als Präfix ist auch nicht gerade die feine Art.
-
hmmm...
ich les grad in der standard und find da nix zum thema "die feine ART" ist das in der "STAND-ART" ???
-
nix da schrieb:
Mag sein, aber ich bin mir relativ sicher, das Du es mit const oder enum regeln würdest!
Klar, aber das bekommt man imho mit der Zeit ins Gefühl. Am Anfang kann als Arrayindex auch ruhig mal ein #define herhalten, da darf man nicht so kleinlich sein.
Aber wenn Lehrer/Bücher immer noch "<iostream.h>" und "void main" predigen dann dreh ich auch durch. Da kann man nämlich a) den Standard hernehmen ohne irgendwelche Probleme zu haben und b) haben auch Einsteiger keine Probleme damit.
MfG SideWinder
-
SideWinder
Ich sehe wir verstehn uns...
-
Unabhängig von dem Inhalt deiner Aussagen, macht auch der Ton die Musik.
-
Freie Radikale darf es auch geben. Wir sind hier im Internet und nicht bei Oma zu Besuch
MfG SideWinder
-
hallo??
bücher sind teuer. in schulen gibt es nicht immer die neuesten.
ebenso finden sich in der bibliothek eine masse guter bücher, die -verdammnichnochmal- diese "gruselige" <iostream.h> einbindet.*wetterdiewetter*
so, und nu mal im ernst: ihr seid alle erwachsen, könnt denken, nach einmaliger klärung ändert ihr einfach die zeile, wenn ihr ein älteres buch erwischt, und:
gut is
es gibt doch nichts langweiligeres, als immer wieder den gleichen mist zu bewettern.
und wenn der lehrer es nicht rafft.. wat solls, ihr wisst es besser. dafür kann er eventuell bessere algos. und das ist mehr wert.mein gott, man kann sich auch über interessantere dinge unterhalten.
schokolade zum bleistift
-
"Professionelles Einsteiger Tutorial"
Professionelles Turorial, gibt es den sowas? "professionel" bedeute "beruflich", und wer beruflich was lernt nimmt meistens Untericht.
main () { } int main (void) { return 0; } int main (int argc, char *argv[]) { return 0; }
Ich bin für:
int main(){ return 0; }
#include <iostream.h> #include <stdio.h> #include <math.h> #include <assert.h> // als #include <iostream> #include <cstdio> #include <cmath> #include <cassert>
Bei <iostream.h> hast du recht ist kein Standart, aber <stdio.h>, <math.h> und <assert.h> sind C++ Standart und deshalb nur aus manchen Stilansichten verwerflich (und ich bin nicht gerade Vertreter dieses Stils).
#define __MAX_TYPES_FIGHTERS 100 // als const int MAX_TYPES_FIGHTERS = 100; // bzw. enum MAX_TYPES { FIGHTERS = 100, NONE = 0 };
Von Standart her ist nur ersteres wegen den __ die für die Compilermplementierung reserviert sind verwerflich, der Rest ist standartkonform. Von Stil her würde ich Fall zwei nehmen und zwar klein geschrieben, da es kein Preprocessor Befehl ist. enum MAX_TYPES ist nicht so gut weil hier Dinge wie int a=FIGHTERS; alles anderes als eindeutig sind.
Am aller besten ist aber immer noch:class Fighter{ public: static const max=100; };
Mag sein, aber ich bin mir relativ sicher, das Du es mit const oder enum regeln würdest!
Definiere "es". Auf was Pronomen verweisen sollte aus dem Kontext klar werden, das ist ungeschriebener internationaler Sprachstandart.
Ich denk mal Du würdest es am liebsten richtig haben, als Bullshit vor der Nase zu haben, welches Du lernst.
Wenn ich versuche den Satz zu verstehen geht folgendes in meinem Kopf vor:
Warnung : Zeile 1, Wort 4 : in einem Satz wird "Du" kein geschrieben.
Fehler : Zeile 1, Wort 6 : "es" kann nicht auf ein vorher genanntes Nomen oder untergeordneten Satz bezogen werden, also ist es (bezieht sich auf "es") undefiniert.
Fehler : Zeile 1, Wort 11 : Ein Vergleich kann nicht durch "als" eingleitet werden wenn sich vorher ein Superlativ befindet. Vergleich:
Susi hat Tim lieber als Paul.
Warnung : Zeile 1, Wort 18 : Es (allgemeines "es") heist "der Bullshit" also muss du "welchen" anstatt von "welches" gebrauchen.
Warnung : Zeile 1, Wort 19 : Wiederholte Fehler werden nur einmal gemeldet.
Satzverständins : 2 Fehler, 3 Warnung daraus schließe ich, dass dieses Dialekt nicht mit dem von mir anerkannten Sprachstandart kompatibel ist.
Oder um das ein wenig deutlicher auszudrücken:
Lern schreiben bevor du eine Predigt über Standartgemässigkeit hälst.PS: Wenn du bei mir Schreibfehler findest ist nicht so schlimm da ich ja auch nicht predige man solle sich an Standarts halten.
und ich finde, die zahlreichen abweichungen und erweiterungen die z.b. der microsoft compiler hat nicht schlecht!
Kommt darauf an was du genau meinst, aus Erfahrung finde ich es gut um alles wo M$ draufsteht einen großen Bogen zu machen.
-
und ich finde, die zahlreichen abweichungen und erweiterungen die z.b. der microsoft compiler hat nicht schlecht!
Nenn mal einen.
Meinst du die Erweiterung CString? Oder Das Feature von for-Überlebenen Variablen?
aber <stdio.h>, <math.h> und <assert.h> sind C++ stan****
nein
-
DrGreenthumb schrieb:
und ich finde, die zahlreichen abweichungen und erweiterungen die z.b. der microsoft compiler hat nicht schlecht!
Nenn mal einen.
Meinst du die Erweiterung CString? Oder Das Feature von for-Überlebenen Variablen?
aber <stdio.h>, <math.h> und <assert.h> sind C++ stan****
nein
compatibilitäts modus ausschalten und die variablen leben nur noch in der for schleife.
obsolete bedeutet nicht "nicht standard" konform
-
***
Neue Rechtschreibreform, man kann "Du" groß oder klein schreiben, es ist egal, außer "Ihnen" und "Sie", welche die einzigsten Anreden sind die groß geschrieben werden müssen, hat man bei "Du" die Qual der Wahl.Standard schreibt man mit D wie Dora am Ende, nicht mit T.
Wenn Du Beruflich nur im Unterricht lernst, tust Du mir leid.
stdio.h
math.h
assert.hist kein ISO-C++ Standard. Das ist ANSI C Standard.
Dein persönlicher Angriff wurde ignoriert, denn Du bist mir egal.
-
@b7f7: Man kann auch die Erweiterungen an haben und die Variablen leben nur innerhalb der for-Schleife. Das ist sogar die Standardeinstellung.
Das Thema mit den Schleifen hat mit Erweiterungen nichts zu tun, das liegt daran, dass die Regelung früher anders war und die Compiler noch eine Art Kompatibilitätsmodus anbieten.Für VC++: force conformance in for-loop scopes
-
nix da schrieb:
stdio.h
math.h
assert.hist kein ISO-C++ Standard. Das ist ANSI C Standard.
§D.5 du Pfeife
'nuff said
-
DrGreenthumb schrieb:
Meinst du die Erweiterung CString? Oder Das Feature von for-Überlebenen Variablen?
Ich finde z.B.
functionName(&ClassName(ctor_args));
nicht schlecht, weil es mir auf den Sack gehen würde, dafür jedesmal eine temporäre Variable zu definieren.
CString ist keine Erweiterung zur Sprache C++ (anders als die managed Extensions), sondern eine Stringklasse wie jeder sie auch schreiben kann.
Und die Erweiterungen sind außerdem abstellbar, weswegen ich die Aufregung sowieso nicht verstehe.
-
compatibilitäts modus ausschalten und die variablen leben nur noch in der for schleife.
obsolete bedeutet nicht "nicht standard" konformAch, das ist obsolete, sprich war mal überall so? Aber wenn etwas veraltet ist, nicht mehr dem heutigen Standard entspricht, ist es auch nicht mehr so ganz Standard-Konform...
Wenn das mit einem Häkchen getan ist, wieso lese ich dann immer dieses komische if-define?
Na mir auch latte. Das war nur ein ironisches Beispiel, zur Frage nach den "Erweiterungen".
-
Optimizer schrieb:
Ich finde z.B.
functionName(&ClassName(ctor_args));
nicht schlecht, weil es mir auf den Sack gehen würde, dafür jedesmal eine temporäre Variable zu definieren.
Und dass ist auch eine Erweiterung, und nicht nur Zufall?
Die temporäre Variable muss man in Kauf nehmen, wenn man C++ schreiben will. Das ist eben eine Eigenschaft der Sprache. Wenn du die "Erweiterungen" benutzt, nenn es meinetwegen MS-C++.CString ist keine Erweiterung zur Sprache C++ (anders als die managed Extensions), sondern eine Stringklasse wie jeder sie auch schreiben kann.
Sach an...
-
DrGreenthumb schrieb:
Wenn das mit einem Häkchen getan ist, wieso lese ich dann immer dieses komische if-define?
Weil der VC++6 es nicht kann. Die neueren koennen den for scope richtig setzen, ist aber defaultmaessig falsch rum.
-
Mein VC7.1 setzt den for-scope, aber richtig (default).
Man sollte sich an den Standard halten mit einem Auge auf die Funktionalität der großen Compiler,
so wäre ein "export" in einem Programm schlecht, da es so gut wie kein Compiler beherrscht.
Dagegen sind Funktionstemplates ne schöne Alternative zu Makros (wo es natürlich möglich ist).