Als «c» getaggte Fragen

C ist eine universelle Programmiersprache, die für die Systemprogrammierung (Betriebssystem und eingebettet), Bibliotheken, Spiele und plattformübergreifende Programme verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899 definiert (die neueste Version, 9899: 2018, sofern nicht anders angegeben - auch tagversionsspezifische Anforderungen mit c89, c99, c11 usw. kennzeichnen). C unterscheidet sich von C ++ und sollte ohne einen rationalen Grund nicht mit dem C ++ - Tag kombiniert werden.

15
Wie teilt strtok () die Zeichenfolge in C in Token auf?
Bitte erklären Sie mir die strtok()Funktionsweise. Das Handbuch sagt, dass es die Zeichenfolge in Token zerlegt. Ich kann aus dem Handbuch nicht verstehen, was es tatsächlich tut. Ich habe Uhren hinzugefügt strund um *pchzu überprüfen, ob es funktioniert, als die erste while-Schleife auftrat, war der Inhalt von strnur "this". Wie …
114 c  string  split  token  strtok 


5
GDB beschädigter Stack-Frame - Wie debugge ich?
Ich habe die folgende Stapelverfolgung. Ist es möglich, daraus etwas Nützliches für das Debuggen zu erkennen? Program received signal SIGSEGV, Segmentation fault. 0x00000002 in ?? () (gdb) bt #0 0x00000002 in ?? () #1 0x00000001 in ?? () #2 0xbffff284 in ?? () Backtrace stopped: previous frame inner to this …
113 c  recursion  gdb 

7
C99 stdint.h Header und MS Visual Studio
Zu meinem Erstaunen habe ich gerade festgestellt, dass die C99 stdint.h ab MS Visual Studio 2003 fehlt. Ich bin mir sicher, dass sie ihre Gründe haben, aber weiß jemand, wo ich eine Kopie herunterladen kann? Ohne diesen Header habe ich keine Definitionen für nützliche Typen wie uint32_t usw.
113 c++  c  visual-studio  c99 


7
Was ist der Unterschied zwischen vmalloc und kmalloc?
Ich habe herumgegoogelt und festgestellt, dass die meisten Leute die Verwendung von befürworten kmalloc, da Sie garantiert zusammenhängende physische Speicherblöcke erhalten. Es scheint jedoch auch so, als ob kmalloces fehlschlagen kann, wenn ein zusammenhängender physischer Block, den Sie möchten, nicht gefunden werden kann. Was sind die Vorteile eines zusammenhängenden Speicherblocks? …

4
Linker Ausdruck mit Leerzeichen
Wie kann ich bei Verwendung von printf eine Zeichenfolge mit Leerzeichen links auffüllen? Zum Beispiel möchte ich "Hallo" mit 40 Leerzeichen davor drucken. Außerdem besteht die Zeichenfolge, die ich drucken möchte, aus mehreren Zeilen. Muss ich jede Zeile einzeln drucken? EDIT: Um ganz klar zu sein, ich möchte genau 40 …
113 c  formatting  printf 


10
Ist free (ptr), wo ptr NULL ist, ein beschädigter Speicher?
Theoretisch kann ich das sagen free(ptr); free(ptr); ist eine Speicherbeschädigung, da wir den bereits freigegebenen Speicher freigeben. Aber was wenn free(ptr); ptr=NULL; free(ptr); Da sich das Betriebssystem undefiniert verhält, kann ich keine tatsächliche theoretische Analyse darüber erhalten, was passiert. Was auch immer ich tue, ist das Gedächtnisbeschädigung oder nicht? Ist …

9
Warum nicht verwendete Rückgabewerte ungültig machen?
int fn(); void whatever() { (void) fn(); } Gibt es einen Grund, einen nicht verwendeten Rückgabewert für ungültig zu erklären, oder habe ich Recht, wenn ich denke, dass dies reine Zeitverschwendung ist? Nachverfolgen: Nun, das scheint ziemlich umfassend zu sein. Ich nehme an, es ist besser als einen nicht verwendeten …
112 c++  c  void 


19
#ifdef vs #if - Was ist besser / sicherer als eine Methode zum Aktivieren / Deaktivieren der Kompilierung bestimmter Codeabschnitte?
Das mag eine Frage des Stils sein, aber es gibt eine gewisse Kluft in unserem Entwicklerteam und ich habe mich gefragt, ob jemand andere Ideen zu diesem Thema hat ... Grundsätzlich haben wir einige Debug-Print-Anweisungen, die wir während der normalen Entwicklung deaktivieren. Persönlich mache ich lieber Folgendes: //---- SomeSourceFile.cpp ---- …

5
Wo ist PATH_MAX unter Linux definiert?
Mit welcher Header-Datei soll ich aufrufen #include, um PATH_MAX als int für die Größe eines Strings verwenden zu können? Ich möchte erklären können: char *current_path[PATH_MAX]; Wenn ich dies tue, gibt mein Compiler (Clang / LLVM unter Linux) den folgenden Fehler aus: recursive_find6.c:29:20: error: use of undeclared identifier 'PATH_MAX' char *current_path[PATH_MAX]; …
112 c  linux  gcc  include  clang 



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.