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.

1
CHAR_WIDTH nicht deklariert
Ich erhalte die Fehlermeldung, ‘CHAR_WIDTH’ undeclared wenn ich versuche, dieses einfache Programm zu kompilieren: #include <stdio.h> #include <limits.h> int main() { printf("CHAR_BIT = %d\n", CHAR_BIT); printf("CHAR_WIDTH = %d\n", CHAR_WIDTH); return (0); } mit gcc ./show_char_width.c -o show_char_width und gcc: GNU C17 (Ubuntu 8.3.0-6ubuntu1) Version 8.3.0 (x86_64-linux-gnu), kompiliert von GNU C …
9 c  gcc 

1
"Illegale Hardware-Anweisung" aus sehr einfachem Code
Während ich eine zweifelhafte Behauptung untersuchte , schrieb ich dieses kleine Testprogrammnoway.c int proveit() { unsigned int n = 0; while (1) n++; return 0; } int main() { proveit(); return 0; } Wenn ich das teste, bekomme ich: $ clang -O noway.c $ ./a.out zsh: illegal hardware instruction ./a.out …


2
Was ist die Kapselung zur Kompilierungszeit in C?
Als ich die Vorteile von C gegenüber C ++ untersuchte, stieß ich auf diesen Absatz: Die Standardmethode in C zur Kapselung besteht darin, eine Struktur weiterzuleiten und den Zugriff auf ihre Daten nur über Funktionen zuzulassen. Diese Methode erstellt auch eine Kapselung zur Kompilierungszeit. Die Kapselung der Kompilierungszeit ermöglicht es …
9 c 

6
C Zeiger auf Array-Deklaration mit Bitweise und Operator
Ich möchte den folgenden Code verstehen: //... #define _C 0x20 extern const char *_ctype_; //... __only_inline int iscntrl(int _c) { return (_c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)_c] & _C)); } Es stammt aus der Datei ctype.h aus dem Quellcode des Betriebssystems obenbsd. Diese Funktion prüft, ob …
9 c  openbsd 

3
foo (nichtig) vs foo (nichtig *)
Gibt es funktional und syntaktisch einen Unterschied zwischen einer Funktion, deren Prototyp ist int foo(void)und int foo(void *)? Ich kenne den Unterschied zwischen zum Beispiel int bar(int)und int bar(int *)- einer von ihnen sucht nach einem int und der andere sucht nach einem int-Zeiger. Hat voidverhalten sich genauso?

3
+ (+ k--) Ausdruck in C.
Ich habe diese Frage in einem Test gesehen, in dem wir die Ausgabe des folgenden Codes mitteilen müssen. #include<stdio.h> int main(){ int k = 0; while(+(+k--)!=0) k=k++; printf("%d\n", k); return 0; } Die Ausgabe ist -1. Ich bin mir jedoch nicht sicher, warum dies die Antwort ist. Was bedeutet der …
9 c 


1
Sind Objektinitialisierungen in Java "Foo f = new Foo ()" im Wesentlichen dasselbe wie die Verwendung von malloc für einen Zeiger in C?
Ich versuche, den tatsächlichen Prozess hinter der Objekterstellung in Java zu verstehen - und ich nehme an, andere Programmiersprachen. Wäre es falsch anzunehmen, dass die Objektinitialisierung in Java dieselbe ist wie bei Verwendung von malloc für eine Struktur in C? Beispiel: Foo f = new Foo(10); typedef struct foo Foo; …





2
Schwierigkeiten beim Verständnis der Logik in der zerlegten binären Bombenphase 3
Ich habe das folgende Montageprogramm aus dem Binärbombenlabor. Ziel ist es, das Schlüsselwort zu ermitteln, das zum Ausführen der Binärdatei erforderlich ist, ohne die explode_bombFunktion auszulösen . Ich habe meine Analyse der Baugruppe für dieses Programm kommentiert, aber ich habe Probleme, alles zusammenzusetzen. Ich glaube, ich habe alle Informationen, die …

2
kvm hypercall mit mehreren args
Ich versuche derzeit, mit kvm einen kleinen Hypervisor und Kernel zu erstellen, und ich habe Probleme, Hypercalls mit mehreren Argumenten zum Funktionieren zu bringen. Folgendes habe ich versucht: // guest.c #define KVM_HYPERCALL vmcall // #define KVM_HYPERCALL vmmcall // #define KVM_HYPERCALL ".byte 0x0f,0x01,0xd9" // #define KVM_HYPERCALL .byte 0x0f,0x01,0xc1" static inline long …

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.