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
Was genau ist die Als-ob-Regel?
Wie der Titel sagt, Was genau ist die "Als ob" -Regel? Eine typische Antwort wäre: Die Regel, die alle Codetransformationen zulässt, die das beobachtbare Verhalten des Programms nicht ändern Von Zeit zu Zeit erhalten wir Verhaltensweisen von bestimmten Implementierungen, die dieser Regel zugeordnet sind. Viele Male falsch. Also, was genau …
88 c++  c  optimization  c++-faq  as-if 

4
PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init (& mutex, param)
Gibt es einen Unterschied zwischen pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; Oder pthread_mutex_t lock; pthread_mutex_init ( &lock, NULL); Bin ich sicher genug, wenn ich nur die erste Methode verwende? HINWEIS: Meine Frage bezieht sich hauptsächlich auf sehr kleine Programme, bei denen ich höchstens mehrere Clients mit einem Server verbinden und ihre Anfragen …
88 c  ubuntu  pthreads  mutex 

4
Was nützt der Rückgabewert memset ()?
memset()wird als Rückgabe deklariert, void*die immer den gleichen Wert hat wie die an die Funktion übergebene Adresse. Was nützt der Rückgabewert? Warum kehrt es nicht zurück void?
88 c++  c  memset 


6
Sind GCC- und Clang-Parser wirklich handgeschrieben?
Es scheint, dass GCC und LLVM-Clang handgeschriebene Parser für rekursiven Abstieg verwenden und keine maschinengenerierte, Bison-Flex-basierte Bottom-up-Analyse. Könnte hier jemand bitte bestätigen, dass dies der Fall ist? Und wenn ja, warum verwenden Mainstream-Compiler-Frameworks handgeschriebene Parser? Update : interessanter Blog zu diesem Thema hier

4
Werden Stapelvariablen durch das GCC __attribute __ ((ausgerichtet (x))) ausgerichtet?
Ich habe den folgenden Code: #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } Und ich habe folgende Ausgabe: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac Warum ist die Adresse von a[0]kein Vielfaches von 0x1000? Was genau __attribute__((aligned(x)))macht das? Ich …


7
Was ist der vorzeichenlose Datentyp?
Ich habe diesen unsigned"typenlosen" Typ ein paar Mal gesehen, aber nie eine Erklärung dafür gesehen. Ich nehme an, es gibt einen entsprechenden signedTyp. Hier ist ein Beispiel: static unsigned long next = 1; /* RAND_MAX assumed to be 32767 */ int myrand(void) { next = next * 1103515245 + 12345; …
88 c  types  unsigned 

5
Wie inkrementiere ich eine Zeigeradresse und einen Zeigerwert?
Lasst uns annehmen, int *p; int a = 100; p = &a; Was macht der folgende Code eigentlich und wie? p++; ++p; ++*p; ++(*p); ++*(p); *p++; (*p)++; *(p)++; *++p; *(++p); Ich weiß, das ist in Bezug auf die Codierung etwas chaotisch, aber ich möchte wissen, was tatsächlich passieren wird, wenn …
88 c  pointers 

11
Gibt es eine Funktion zum Kopieren eines Arrays in C / C ++?
Ich bin ein Java-Programmierer, der C / C ++ lernt. Ich weiß also, dass Java eine Funktion wie System.arraycopy () hat. um ein Array zu kopieren. Ich habe mich gefragt, ob es in C oder C ++ eine Funktion zum Kopieren eines Arrays gibt. Ich konnte nur eine Implementierung zum …
88 c++  c  arrays 

7
Verwenden Sie continue in einer switch-Anweisung
Ich möchte von der Mitte einer switchAnweisung zur Schleifenanweisung im folgenden Code springen : while (something = get_something()) { switch (something) { case A: case B: break; default: // get another something and try again continue; } // do something for a handled something do_something(); } Ist dies eine gültige …





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.