Domande taggate «c»

C è un linguaggio di programmazione generico utilizzato per la programmazione di sistemi (OS e embedded), librerie, giochi e multipiattaforma. Questo tag deve essere utilizzato con domande generali relative al linguaggio C, come definito nella norma ISO 9899 (l'ultima versione, 9899: 2018, se non diversamente specificato - anche tag richieste specifiche della versione con c89, c99, c11, ecc.). C è distinto da C ++ e non dovrebbe essere combinato con il tag C ++ in assenza di una ragione razionale.

16
Ho sentito che i ++ non è thread-safe, ++ i thread-safe?
Ho sentito che i ++ non è un'istruzione thread-safe poiché in assembly si riduce a memorizzare il valore originale come temp da qualche parte, incrementandolo e quindi sostituendolo, il che potrebbe essere interrotto da un cambio di contesto. Tuttavia, mi chiedo se ++ i. Per quanto ne so, questo si …
90 c++  c  multithreading 


12
C Gestione della memoria
Ho sempre sentito dire che in C devi davvero guardare come gestisci la memoria. E sto ancora iniziando a imparare il C, ma fino ad ora non ho dovuto fare alcuna memoria per gestire le attività correlate .. Ho sempre immaginato di dover rilasciare variabili e fare ogni sorta di …
90 c  memory 

29
Testare i puntatori per la validità (C / C ++)
C'è un modo per determinare (programmaticamente, ovviamente) se un dato puntatore è "valido"? Verificare la presenza di NULL è facile, ma per quanto riguarda cose come 0x00001234? Quando si tenta di dereferenziare questo tipo di puntatore, si verifica un'eccezione / arresto anomalo. È preferibile un metodo multipiattaforma, ma va bene …
90 c++  c  validation  pointers  null 


6
I parser GCC e Clang sono davvero scritti a mano?
Sembra che GCC e LLVM-Clang stiano utilizzando parser discendenti ricorsivi scritti a mano e non l'analisi bottom-up generata dalla macchina, basata su Bison-Flex. Qualcuno qui potrebbe confermare che questo è il caso? E se è così, perché i framework dei compilatori tradizionali utilizzano parser scritti a mano? Aggiornamento : blog …

7
Mappa un array 2D su un array 1D
Voglio rappresentare un array 2D con un array 1D. Una funzione passerà i due indici (x, y) e il valore da memorizzare. Questi due simboli rappresenterebbero un singolo elemento di una matrice 1D e lo imposteranno di conseguenza. So che l'array 1D deve avere la dimensione di arrayWidth × arrayHeight, …

4
Chiama una funzione C dal codice C ++
Ho una funzione C che vorrei chiamare da C ++. Non ho potuto " extern "C" void foo()" usare questo tipo di approccio perché la funzione C non è stata compilata usando g ++. Ma si compila bene usando gcc. Qualche idea su come chiamare la funzione da C ++?
90 c++  c  linux  extern-c 

7
qual è il tipo di dati non firmato?
Ho visto questo unsignedtipo "senza tipo" usato un paio di volte, ma non ho mai visto una spiegazione per questo. Suppongo che ci sia un signedtipo corrispondente . Ecco un esempio: static unsigned long next = 1; /* RAND_MAX assumed to be 32767 */ int myrand(void) { next = next …
90 c  types  unsigned 

3
Cos'è esattamente la regola del "come se"?
Come dice il titolo, Cos'è esattamente la regola "come se"? Una tipica risposta che si potrebbe ottenere è: La regola che consente tutte le trasformazioni del codice che non modificano il comportamento osservabile del programma Di tanto in tanto continuiamo a ricevere comportamenti da determinate implementazioni attribuite a questa regola. …
90 c++  c  optimization  c++-faq  as-if 

10
Differenza tra const e const volatile
Se dichiariamo una variabile come volatileogni volta che il nuovo valore viene aggiornato Se dichiariamo una variabile come constallora il valore di quella variabile non saràmodificato Allora a const volatile int temp; cosa serve dichiarare la variabile tempcome sopra? Cosa succede se dichiariamo come const int temp?
90 c  embedded 

4
Come funziona la libreria di importazione? Dettagli?
So che questo può sembrare abbastanza semplice per i geek. Ma voglio che sia chiarissimo. Quando voglio usare una DLL Win32, di solito chiamo semplicemente API come LoadLibrary () e GetProcAdders (). Ma di recente sto sviluppando con DirectX9 e ho bisogno di aggiungere file d3d9.lib , d3dx9.lib , ecc. …
90 c++  c  windows  visual-c++ 

3
Dove si possono trovare gli standard C89 / C90 in formato PDF?
Sto cercando una versione in copia gratuita dello standard C89 / C90 , ma non riesco a trovarla da nessuna parte! Perché è così difficile trovarlo? Gli standard C99 e C11 sono molto facili da ottenere una copia su Internet. Anche nelle domande di Stack Overflow Dove trovo gli attuali …
90 c  ansi  c89 


8
Ottenere la larghezza del terminale in C?
Ho cercato un modo per ottenere la larghezza del terminale dal mio programma C. Quello che continuo a pensare è qualcosa sulla falsariga di: #include <sys/ioctl.h> #include <stdio.h> int main (void) { struct ttysize ts; ioctl(0, TIOCGSIZE, &ts); printf ("lines %d\n", ts.ts_lines); printf ("columns %d\n", ts.ts_cols); } Ma ogni volta …
89 c  linux  terminal  width 

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.