Zwei Jahre C++ und immernoch keine Ahnung :)
-
@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);
-
@Wade1234 mit einem filedescriptor (der natürlich von einer RAII-Klasse gehalten wird), dem Pointer auf das erste Element eines
std::vector
s und dersize()
desstd::vectors
. Oder eben von einemstd::array
dasselbe. Wie denn Du!?Ne, nicht wirklich, ich würde
istream::read()
nehmen, dann wäre "mit einem filedescriptor (der natürlich von einer RAII-Klasse gehalten wird)" schonmal abgehakt.Bist Du sehr enteuscht wenn ich Dir sage daß aufgrund vieler Deiner Aussagen darauf zu schließen ist daß Du hauptsächlich grottiges C++ schreibst? Das ist nicht als Beleidigung gemeint sondern eher als Anstoß Dir mal moderne Literatur anzusehen.
-
@Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung :
@Swordfish und wie würdest du die funktion
ssize_t read(int fd, void *buf, size_t count);
aufrufen?auto read_result = read( MySocketHandle, (char*)MyStringSocketBuffer.data(), MyStringSocketBuffer.size() );
Auch bei C-APIs, egal ob Posix oder WinAPI, kann man mit STL-Containern arbeiten. Dabei ist unerheblich ob man in dem Fall einen std::string oder einen std.:vector verwendet.
-
die doku sagt jetzt zu size folgendes:
Returns the length of the string, in terms of bytes.
This is the number of actual bytes that conform the contents of the string, which is not necessarily equal to its storage capacity.
sehe ich das richtig, dass ich gar nicht weiß, welche datenmenge da eigentlich maximal transportiert wird? gerade bei sockets sollte man ja schon größere datenmengen verschicken. irgendwie ist das kompliziert.
@Swordfish sagte in Zwei Jahre C++ und immernoch keine Ahnung :
Bist Du sehr enteuscht wenn ich Dir sage daß aufgrund vieler Deiner Aussagen darauf zu schließen ist daß Du hauptsächlich grottiges C++ schreibst? Das ist nicht als Beleidigung gemeint sondern eher als Anstoß Dir mal moderne Literatur anzusehen.
ich habe sogar moderne literatur da. weil diese allerdings geschätzt 4-mal so dick ist, wie die "moderne" c-literatur, ist es beim ansehen geblieben.