Zwei Jahre C++ und immernoch keine Ahnung :)
-
@Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung :
also zum glück kann du mit c++ auch c-programme schreiben.
Festgehalten für die Nachwelt.
-
Ich höre nicht unbedingt gutes über die WinApi. Die Rede ist von LegacyCode und das man definitiv nicht damit lernen sollte. Ebenso höre ich von überall, dass man C++ und C nicht mischen sollte worauf glaube ich @Swordfish auch gerade angespielt hat.
Generell bin ich kein Freund von sowas. Ich achte extra darauf, dass mein Code weitestgehend plattformabhängig funktioniert.
-
Naja die "Basis*" APIs von Betriebssystemen sind alle alt. WinAPI ist wenigstens moderner und grösstenteils weniger schrottig als das ach so tolle POSIX.
Was jetzt schlecht wäre, wäre C++ mit der WinAPI zu lernen. Was nicht schlecht ist, ist C++ zu lernen und dann, wenn man es halbwegs gut kann, sich die WinAPI anzusehen. Oder auch gern das POSIX Gedöns, wenn man auf Schmerzen steht und/oder oder kommerziell native Anwendungen vor allem für den Serverbereich programmieren möchte.
Und IMO kann das schon sehr interessant sein. Man sieht da halt wie die ganzen Dinge gemacht werden die du mit Standard C++ nicht machen kannst. Und dazu gehörten bis vor kurzem (vor C++17) sogar so grundlegende Dinge wie die Liste der Dateien in einem Verzeichnis zu bekommen.
*: Neben den alten grundlegenden APIs gibt es natürlich halbwegs moderne, für Zeugs das neu dazugekommen ist. Beispielsweise Direct3D 11.
-
@Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung :
Ich achte extra darauf, dass mein Code weitestgehend plattformabhängig funktioniert.
aus welchem grund? normalerweise strebt man doch plattformunabhängigkeit an.
-
Es ist doch offensichtlich, dass er sich vertippt hat, lies einfach die zwei Sätze davor.
-
@Mechanics sagte in Zwei Jahre C++ und immernoch keine Ahnung :
Es ist doch offensichtlich, dass er sich vertippt hat, lies einfach die zwei Sätze davor.
sich auf eine plattform zu fixieren mag auch vorteile haben.
-
Ja sry Tippfehler. Natürlich plattformunabhängig. Ich weiß nicht ob das zu kompliziert wird, aber was ist wenn ich mir bei VisualStudio die Implementierungen vom Standard anschaue? Dort wird ja wirklich C++ verwendet und ich hätte Bezug zu einigen Algorithmen weil ich manche davon ja tagtäglich verwende.
-
@Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung :
Ich weiß nicht ob das zu kompliziert wird, aber was ist wenn ich mir bei VisualStudio die Implementierungen vom Standard anschaue? Dort wird ja wirklich C++ verwendet und ich hätte Bezug zu einigen Algorithmen weil ich manche davon ja tagtäglich verwende.
Kannst Du schon machen, nur, die Dinkumware-STL ist grauenhaft zu lesen. Auch wenn man mal von den nötigen
__
absieht, es wimmelt vor Makros und miesen Bezeichnern ... viel vergnügen.
-
@Swordfish sagte in Zwei Jahre C++ und immernoch keine Ahnung :
Kannst Du schon machen, nur, die Dinkumware-STL ist grauenhaft zu lesen. Auch wenn man mal von den nötigen __ absieht, es wimmelt vor Makros und miesen Bezeichnern ... viel vergnügen.
die stl ist ein beispiel dafür, dass echte c++profis sich einen dreck um guten programmierstil scheren.
-
@Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung :
die stl ist ein beispiel dafür, dass echte c++profis sich einen dreck um guten programmierstil scheren.
So ein Quatsch. Ist ein Beispiel dafür daß es nicht einfach sich in große Projekte einzuarbeiten.
-
@Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung :
Ich höre nicht unbedingt gutes über die WinApi. Die Rede ist von LegacyCode und das man definitiv nicht damit lernen sollte.
naja lernen sollte man damit nicht unbedingt, außer vielleicht, wenn man lernen möchte, die winapi in sein c++-programm einzubinden. also es könnte ja nützlich sein, sich vielleicht mal ein wenig damit zu befassen, weil man a) lernt, in einer dokumentation herumzuwühlen und b) vielleicht mal der unwahrscheinliche fall auftritt, dass man wirklich etwas vom betriebssystem haben möchte.
Ebenso höre ich von überall, dass man C++ und C nicht mischen sollte worauf glaube ich @Swordfish auch gerade angespielt hat.
nein das sollte man auch nicht tun, außer zu übungszwecken und in irgendwelchen sonderfällen.
Generell bin ich kein Freund von sowas. Ich achte extra darauf, dass mein Code weitestgehend plattformabhängig funktioniert.
ja weitestgehend... aber glaubst du, dass microsoft und die opengroup extra eine schnittstelle für bspw. qt erstellt haben, oder wo soll diese plattformunabhängigkeit herkommen?
-
@Swordfish sagte in Zwei Jahre C++ und immernoch keine Ahnung :
@Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung :
die stl ist ein beispiel dafür, dass echte c++profis sich einen dreck um guten programmierstil scheren.
So ein Quatsch. Ist ein Beispiel dafür daß es nicht einfach sich in große Projekte einzuarbeiten.
deine worte:
"die Dinkumware-STL ist grauenhaft zu lesen. Auch wenn man mal von den nötigen __ absieht, es wimmelt vor Makros und miesen Bezeichnern"was hat das mit großen projekten zu tun?
-
@Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung :
also zum glück kann du mit c++ auch c-programme schreiben.
nur bedingt.
char* p = "hallo";
ist in c normal, aber in c++ ein fehler
-
@Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung :
ist in c normal, aber in c++ ein fehler
aber
const char *p = "hallo"; char *str = (char *) malloc(1234);
ist ja kein ungültiges c, oder?
-
@Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung :
@Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung :
ist in c normal, aber in c++ ein fehler
aber
const char *p = "hallo"; char *str = (char *) malloc(1234);
ist ja kein ungültiges c, oder?
ungültig ja nicht, aber der c-coder macht sowas nicht. der type-cast ist zeile 2 ist definitiv verpönt. die begründung dafür weiß ich aber nicht mehr.
edit: hier steht es: https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc
-
@Bushmaster aber der c++-programmierer macht das ja so bzw. kann es zumindest so machen.
-
@Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung :
@Bushmaster aber der c++-programmierer macht das ja so bzw. kann es zumindest so machen.
ja, aber dann gibt es mecker von anderen mitgliedern seiner zunft.
-
@Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung :
die begründung dafür weiß ich aber nicht mehr.
Weil es in C mal erlaubt war Funktionen zu verwenden ohne daß der Compiler zuvor eine Deklaration gesehen hat. Es wurde dann eine Funktion mit unbestimmter Parameterzahl angenommen die einen
int
zurückgibt. Entspricht nun die Breite einesvoid*
zufällig nicht der einesint
kann's boom machen.@Bushmaster sagte in Zwei Jahre C++ und immernoch keine Ahnung :
was hat das mit großen projekten zu tun?
Grauenhafte Bezeichner für Leute die mit dem Projekt nicht vertraut sind bzw. nicht wissen was sich die Entwickler so denken. Man kommt mit der Zeit schon d'rauf und kann auch verstehen daß bei der komplexität eher kurze Bezeichner gewält wurden. Makros sind bei manchen Dingen noch notwendiges Übel.
@Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung :
aber der c++-programmierer macht das ja so bzw. kann es zumindest so machen.
wth?
auto p{ "hello" }; std::vector<char> foo(1234, 0); // oder vllt. besser: std::string bar(1234, 0);
-
@Swordfish und wie würdest du die funktion
ssize_t read(int fd, void *buf, size_t count);
aufrufen?
-
Auf jeden Fall ohne vorheriges:
const char *p = "hallo"; char *str = (char *) malloc(1234);