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.



3
Warum funktionieren Funktionszeigerdefinitionen mit einer beliebigen Anzahl von kaufmännischen Und-Zeichen '&' oder Sternchen '*'?
Warum arbeiten die folgenden? void foo() { cout << "Foo to you too!\n"; }; int main() { void (*p1_foo)() = foo; void (*p2_foo)() = *foo; void (*p3_foo)() = &foo; void (*p4_foo)() = *&foo; void (*p5_foo)() = &*foo; void (*p6_foo)() = **foo; void (*p7_foo)() = **********************foo; (*p1_foo)(); (*p2_foo)(); (*p3_foo)(); (*p4_foo)(); (*p5_foo)(); …
216 c++  c  function-pointers 



3
Was bedeuten die Klammern um einen Funktionsnamen?
In einer meiner Projektquelldateien habe ich diese C-Funktionsdefinition gefunden: int (foo) (int *bar) { return foo (bar); } Hinweis: Neben befindet sich kein Sternchen foo, daher handelt es sich nicht um einen Funktionszeiger. Oder ist es? Was ist hier mit dem rekursiven Aufruf los?
214 c  function  parentheses 

4
Was sind die Unterschiede zwischen .so und .dylib auf osx?
.dylib ist die dynamische Bibliothekserweiterung unter OSX, aber mir war nie klar, wann ich ein traditionelles, gemeinsam genutztes Unix-Objekt nicht verwenden kann / sollte. Einige der Fragen, die ich habe: Was sind auf konzeptioneller Ebene die Hauptunterschiede zwischen .so und .dylib? Wann kann / soll ich eins über das andere …
214 c++  c  macos  unix 

8
Close vs Shutdown Socket?
In C habe ich verstanden, dass wenn wir einen Socket schließen, dies bedeutet, dass der Socket zerstört wird und später wiederverwendet werden kann. Wie wäre es mit Herunterfahren? Die Beschreibung besagt, dass die Hälfte einer Duplexverbindung zu diesem Socket geschlossen wird. Aber wird dieser Socket wie closeein Systemaufruf zerstört?
214 c  sockets  networking 

10
statische const vs #define
Ist es besser, static constvars als #definePräprozessor zu verwenden? Oder hängt es vielleicht vom Kontext ab? Was sind Vor- / Nachteile für jede Methode?
212 c++  c  const 

24
Ausführbare Datei vor Reverse Engineering schützen?
Ich habe darüber nachgedacht, wie ich meinen C / C ++ - Code vor Demontage und Reverse Engineering schützen kann. Normalerweise würde ich dieses Verhalten in meinem Code niemals selbst dulden. Das aktuelle Protokoll, an dem ich gearbeitet habe, darf jedoch niemals überprüft oder verständlich sein, um die Sicherheit verschiedener …
210 c++  c  obfuscation  assembly 

30
Gibt es einen guten Valgrind-Ersatz für Windows?
Gesperrt . Diese Frage und ihre Antworten sind gesperrt, da die Frage nicht zum Thema gehört, aber historische Bedeutung hat. Derzeit werden keine neuen Antworten oder Interaktionen akzeptiert. Ich habe mich mit Valgrind befasst, um meine C-Codierung / Debugging zu verbessern, als ich herausfand, dass es nur für Linux ist. …


12
# Makro für Debug-Druck in C definieren?
Der Versuch, ein Makro zu erstellen, das zum Drucken von Debug-Meldungen verwendet werden kann, wenn DEBUG definiert ist, wie der folgende Pseudocode: #define DEBUG 1 #define debug_print(args ...) if (DEBUG) fprintf(stderr, args) Wie wird dies mit einem Makro erreicht?
209 c  c-preprocessor 

24
Wie kann man den Kinderprozess nach dem Verlassen des Elternteils sterben lassen?
Angenommen, ich habe einen Prozess, der genau einen untergeordneten Prozess erzeugt. Wenn nun der übergeordnete Prozess aus irgendeinem Grund beendet wird (normalerweise oder abnormal, durch Töten, ^ C, Fehler behaupten oder irgendetwas anderes), möchte ich, dass der untergeordnete Prozess stirbt. Wie mache ich das richtig? Einige ähnliche Fragen zum Stackoverflow: …
209 c  linux  unix  process  fork 

5
Warum ist ein vorzeichenloser Ganzzahlüberlauf als Verhalten definiert, ein vorzeichenbehafteter Ganzzahlüberlauf jedoch nicht?
Der vorzeichenlose Ganzzahlüberlauf ist sowohl im C- als auch im C ++ - Standard gut definiert. Zum Beispiel heißt es im C99-Standard ( §6.2.5/9) Eine Berechnung mit vorzeichenlosen Operanden kann niemals überlaufen, da ein Ergebnis, das nicht durch den resultierenden vorzeichenlosen Ganzzahltyp dargestellt werden kann, modulo um die Zahl reduziert …

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.