nic_power Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Hallo, Klotzkopp und meine Wenigkeit haben gerade ein bisschen diskutiert, wie Änderungsvorschläge und Korrekturen für FAQ-Beiträge zu handhaben sind. Um den eigentlichen FAQ-Thread übersichtlich zu halten, habe ich einen "Änderungsvorschläge" Thread geöffnet. Und den ersten Vorschlag hätte ich auch schon Thema "Bibliotheken" Neu: Zusätzlich zu den Headerdateien werden oft noch Libraries (Bibliotheken) benötigt (beispielsweise *.lib, *.a, *.dll, *.so, etc. ), die den eigentlichen Programmcode für die einzelnen Funktionen enthalten. Standardfunktionen wie printf(), open(), close() werden üblicherweise in einer Standardbibliothek zusammengefasst, die automatisch gelinkt wird. Begründung: Allgemeingültige Fragen (wie beispielsweise nach Bibliotheken) sollten auch möglichst allgemeingültig beantwortet werden, ohne dabei auf systemspezifische Dinge einzugehen. Die Originalantwort von Guybrush Threepwood ist aber ziemlich windowslastig: Zusätzlich zu den Headerdateien werden oft noch statische Libraries (Bibliotheken) benötigt (.lib, .a), die entweder selbst die Funktionsdefinitionen enthalten oder auf dynamische Bibliotheken (.dll, .so) verweisen. Bei Unixbasierten Systemen sind statische und shared libraries zwei unterschiedliche Dinge, die auch beim Linken mit berücksichtigt werden müssen (eine shared lib wird anders behandelt als eine statische Bibliothek). Achso, noch was. Es wäre hilfreich, die einzelnen FAQ-Beiträge zu nummerieren, das mach die Referenzierung einfacher. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Hi, ich geb dir recht das das äußerst Windowslastig war, liegt einfach daran dass ich bisher nur mit Windows gearbeitet habe. Ich kann also nichts dazu sagen ob man dass für Unix noch mehr erweitern muß. Allerdings finde ich deine Erklärung zu allgemein, da man glaube ich damit immer noch nicht wüßte was genau man jetzt mit diesen Bibliotheken anstellen soll. Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orffi Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Ich hätte da auch einen Änderungsvorschlag: Strings können nicht über den == Operator miteinander verglichen werden, da so nur ihre Startadressen verglichen werden. Um solche Vergleiche durchzuführen gibt es verschiedene Funktionen, z.B. strcmp(), die in einer C Referenz oder hier auf dem Board nachgelesen werden können. Hier wird nur C behandelt, aber die FAQ ist ja für C und C++. In C++ gibt es für Strings aus <string> sehr wohl den Operator == mit dem man zwei Strings vergleichen kann. Ich bin dafür, daß die Unterschiede besser herausgearbeitet werden. Zum Beispiel könnte man von CStrings sprechen, wenn die Rede von char* ist. Bis denn dann Jan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Originally posted by Orffi Ich hätte da auch einen Änderungsvorschlag: Hier wird nur C behandelt, aber die FAQ ist ja für C und C++. In C++ gibt es für Strings aus <string> sehr wohl den Operator == mit dem man zwei Strings vergleichen kann. Ich bin dafür, daß die Unterschiede besser herausgearbeitet werden. Zum Beispiel könnte man von CStrings sprechen, wenn die Rede von char* ist. Bis denn dann Jan Da muß ich dir wiedersprechen, in meinem Beitrag wurde ein String deklariert (char array[10]), der wie ich beschrieben habe nicht per == verglichen werden kann. Was du mit CString meinst ist kein String, sondern ein Objekt welches als Membervariable einen String enthält. Der Überladende Operator == dieses Objekts kann auch keine Strings vergleichen, sondern ruft intern auch anderen Funktionen dafür auf um dieses Verhalten zu simulieren. Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Originally posted by Orffi Ich bin dafür, daß die Unterschiede besser herausgearbeitet werden. Zum Beispiel könnte man von CStrings sprechen, wenn die Rede von char* ist.Darum habe ich den Beitrag mit "Strings in C und wie man sie vergleicht" betitelt. Man könnte das natürlich im Text des Beitrags auch noch mal erwähnen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orffi Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 @Klotzkopf Ich muß gestehen, daß ich dies überlesen habe. Allerdings wäre ich trotzdem dafür, daß unter dem Thema "Strings" beide Sprachen abgehandelt werden und in diesem Zusammenhang auf die Unterschiede hingewiesen wird. @Guybrush Threepwood CString mag in der Welt von Microsoft eine Bezeichnung für einen String sein, aber in der restlichen Welt wird mit CString eben ein String bezeichnet, der ein char* ist. Es geht hier darum, den Unterschied zwischen char* und der Klasse string aus <string> hervor zu heben. Übrigens ist es völlig egal, wie ein Operator sein Verhalten erreicht, das entscheidene ist, daß sein Verhalten korrekt ist. Und der Operator == liefert zurück, ob die Strings gleich sind oder nicht. Mehr ist nicht entscheidend. Bis denn dann Jan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Wie wär's denn, wenn wir "C-String" sagen, um eine Verwechslung mit der MFC-Klasse auszuschließen. Die Gefahr besteht meiner Meinung nach, weil viele Anfänger die MFC verwenden. Orffi, möchtest du eine Ergänzung für den String-Beitrag schreiben, die std::string behandelt? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crush Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Also das hier geht über die FAQ-Frage noch etwas hinaus: Auch wenn´s mords aufwändig klingt: Warum dröselt man nicht einfachheitshalber die Programmierforen in C/C++ jeweils in Windows(evtl mehrfach in XP/NT/98)/Unix/Linux/DOS und von der Thematik in Sound/Socket/MFC/STL/ATL/DLL/Grafik/DB oder nochwas auf und evtl. noch tiefer schürfend in DX/OpenGL/GDI/SDL/-Programmierung usw. in Unterforen auf, dann wäre alles getrennt, jeder weiß worum es geht und um zu posten muß man sich selber einsortieren und entscheiden wo die Frage hin gehört. Ein solch breites Spektrum an Foren würde es auch für den Anfänger leichter machen NICHT die Suchfunktion zu verwenden (die ja eh nur klappt, wenn in jedem Thread auch die 100% passenden Triggerwörter angewendet wurden) und zielgesteuerter auf sein Thema hin zu recherchieren. Bisher sieht das C/C++-Forum von der Thematikstreuung doch sehr nach Kraut und Rüben aus. Jedenfalls würden sich die 1001 Frage nach der Plattform, dem Betriebssystem und den verwendeten Compilern, etc. sich somit erübrigen und man kann gezielter auf die Fragen eingehen. Es machen sich eh viel zu wenig den Aufwand jedesmal diese nötigen Infos mit ins Posting zu klatschen. Wenn das zuviel ist wäres es doch u.U. auch möglich einfach alle Punkte beim Posten aufzulisten (wie die Message Icons) und der Poster kann per Selektion den Themenkreis zur Frage eingrenzen ohne alles selber schreiben zu müssen. Die FAQs könnten dann einfach wie Ulis Ankündigungs-Post immer an erster Stelle stehen und sollten jederzeit von Mods ergänzt werden können. Ist zwar nur ein Vorschlag, aber bei so einem breitbandigen Spektrum wie der Programmierung sicherlich sinnvoll und man hätte einige lästige Forums-Fliegen auf einmal zerklatscht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orffi Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Ich habe hier einen kleinen Text geschrieben. Allerdings bin ich der Meinung, daß Guybrush Threepwood, entscheiden sollte, ob er diesen Text so möchte, da 1. ich seinen Text ein wenig verändert habe und 2. es "sein" Thema ist und ich es ihm nicht "wegnehmen" möchte. Mir ist durchaus bewußt, daß es leichter ist, einen Text zu kritisieren als ihn selber zu verfassen, deswegen sollte mein Initialkommentar kein Angriff auf Guybrush Threepwood sein, sondern nur ein Hinweis. Lange Vorrede, hier der Text: In C und C++ hat die Bezeichnung String zwei unterschiedliche Bedeutungen. Deswegen unterscheiden wir zwischen C-String und std::string. In C werden Strings als array von Character angelegt: char szString[10]; /*ein C-String*/ reserviert Speicherplatz für einen String mit 9 (Index 0-8) Zeichen, da jeder C-String mit einem '\0' abgeschlossen werden muß. Dies geschieht bei den meisten Funktionen automatisch. Nur wenn man die Zeichen selber festlegt, sollte man daran denken, da sonst Speciherüberläufe auftreten könen. C-Strings können nicht über den == Operator miteinander verglichen werden, da so nur die Startadressen der Arrays verglichen werden und nicht der Inhalt der Arrays. Um Vergleiche über den Inhalt durchzuführen, gibt es verschiedene Funktionen, z.B. strcmp() aus <string.h>, die in einer C Referenz oder hier auf dem Board nachgelesen werden können. In C++ kann man selbstverständlich auch die C-Strings verwenden, aber wie aus dem obigen Abschnitt erkennbar ist, ist eine solche Lösung nicht die eleganteste. Deshalb gibt es in den Bibliotheken, die zum ISO-Standard von C++ gehören, die Klasse string aus <string>. Durch Verwendung dieser Klasse vereinfacht sich die Handhabung von Strings. Strings vom Typ std::string kann man z.B. sehr einfach durch den bekannten == Operator vergleichen. Des Weiteren muß bei der Erzeugung eines std::strings nicht die maximale Größe bekannt sein. Die Klasse "kümmert sich darum, daß immer genügend Speicher alloziiert ist. Um von einem std::string einen C-String zu erhalten nutzt man die Funktion c_str(), die in der Klasse string enthalten ist. Um alle Möglichkeiten der Klasse string kennen zu lernen, empfehlen wir z.B das Kapitel 20 aus "The C++ Programming Language" von Bjarne Stroustrup, die dritte Ausgabe. Bis denn dann Jan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 7. März 2003 Autor Teilen Geschrieben 7. März 2003 Hallo, Originally posted by Guybrush Threepwood Allerdings finde ich deine Erklärung zu allgemein, da man glaube ich damit immer noch nicht wüßte was genau man jetzt mit diesen Bibliotheken anstellen soll. Dann mach doch mal einen Vorschlag, wie man das Thema konkretisieren kann, ohne plattformabhängig zu werden. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 7. März 2003 Teilen Geschrieben 7. März 2003 Halloeloe, von meiner Seite zunaechst einmal der erinnernde Hinweis, dass dieses Forum Sprachstandards behandelt, nichts anderes sind ja C und C++. Das wuerde ich schon gern so belassen, aus guten Gruenden... Library-Problematiken usw. fallen in das Forum darueber. Eine FAQ wuerde auch aus den Fugen geraten, wenn man jede Frage noch implemtierungsabhaengig beantworten wollte. (Wenn man das muesste waere genaugenommen die Frage bereits OT.) ;-) Falls Euch das Implementierungsforum zu unuebersichtlich vorkommt, koennen wir gerne OS- oder compilerspezifische Unterforen bilden, meinethalben auch zweifach geschachtelt, also z. B. Impl.Windows.BorlandBuilder, Impl.Linux.gcc oder auch Impl.etc.etc. Ich kann aber nicht beurteilen, ob der Traffic das rechtfertigen wuerde und sich geeignete Moderatoren finden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 8. März 2003 Teilen Geschrieben 8. März 2003 e@sy hat freundlicherweise die FAQ-Software so eingerichtet, dass wir eine eigene FAQ haben. Damit haben wir jetzt auch die Möglichkeit, Fragen nach Themen zu sortieren. Link zur FAQ Ich habe den Header/Library-Beitrag noch nicht eingestellt, weil da offenbar noch Klärungsbedarf besteht. Wie wäre es, wenn nur der Teil über die Header im Standardbereich steht, und für die Libs auf den plattformspezifischen Teil der FAQ verwiesen wird? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 8. März 2003 Teilen Geschrieben 8. März 2003 Originally posted by Klotzkopp Wie wäre es, wenn nur der Teil über die Header im Standardbereich steht, und für die Libs auf den plattformspezifischen Teil der FAQ verwiesen wird? Halte ich fuer eine saubere Loesung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 8. März 2003 Autor Teilen Geschrieben 8. März 2003 Hallo, ganz rausnehmen würde ich es aus dem allgemeinen Teil nicht, da das Konzept "Bibliothek" plattformunabhängig ist und beispielsweise für C direkt im Sprachstandard definiert wird (K&R, Anhang . Wie wäre es mit einer allgemeinen Beschreibung und den entsprechenden Links auf die plattformspezifischen Aspekte? Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 8. März 2003 Teilen Geschrieben 8. März 2003 Genau das meinte Klotzkopp doch, wenn ich ihn richtig verstanden habe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 10. März 2003 Teilen Geschrieben 10. März 2003 Originally posted by Orffi Ich habe hier einen kleinen Text geschrieben. Allerdings bin ich der Meinung, daß Guybrush Threepwood, entscheiden sollte, ob er diesen Text so möchte, da 1. ich seinen Text ein wenig verändert habe und 2. es "sein" Thema ist und ich es ihm nicht "wegnehmen" möchte. Mir ist durchaus bewußt, daß es leichter ist, einen Text zu kritisieren als ihn selber zu verfassen, deswegen sollte mein Initialkommentar kein Angriff auf Guybrush Threepwood sein, sondern nur ein Hinweis. Ich hätte vielleicht noch nen Smilie setzten sollen:), ich hab deine Kritik nämlich nicht als Angriff empfunden. Außerdem ist dein Text wirklich besser, weil er beides erläutert. Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 10. März 2003 Teilen Geschrieben 10. März 2003 Originally posted by nic_power Hallo, Dann mach doch mal einen Vorschlag, wie man das Thema konkretisieren kann, ohne plattformabhängig zu werden. Nic Wie gesagt, ich weiß nicht wie das auf anderen Platformen ist. Ich würde den Text halt noch dahingehend erweitern, dass du schreibst das es auch Funktionen gibt die nicht Standartmäßig gelinkt werden und dass für diese halt selber die entsprechenden Libs angegeben werden müßen. Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 10. März 2003 Teilen Geschrieben 10. März 2003 Originally posted by Klotzkopp Ich habe den Header/Library-Beitrag noch nicht eingestellt, weil da offenbar noch Klärungsbedarf besteht. Wie wäre es, wenn nur der Teil über die Header im Standardbereich steht, und für die Libs auf den plattformspezifischen Teil der FAQ verwiesen wird? Find ich gut Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.