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.

4
Perché memmove è più veloce di memcpy?
Sto studiando gli hotspot delle prestazioni in un'applicazione che trascorre il 50% del suo tempo in memmove (3). L'applicazione inserisce milioni di interi a 4 byte in array ordinati e utilizza memmove per spostare i dati "a destra" per fare spazio al valore inserito. La mia aspettativa era che la …
89 c++  c  performance  memory 

4
GDB: interruzione se variabile uguale valore
Mi piace fare in modo che GDB imposti un punto di interruzione quando una variabile è uguale a un valore che ho impostato, ho provato questo esempio: #include <stdio.h> main() { int i = 0; for(i=0;i<7;++i) printf("%d\n", i); return 0; } Uscita da GDB: (gdb) break if ((int)i == 5) …
89 c  gdb 


3
Threadsafe vs rientro
Recentemente, ho posto una domanda, con titolo "Il thread malloc è sicuro?" , e al suo interno ho chiesto: "Il malloc rientra?" Avevo l'impressione che tutti i rientranti fossero thread-safe. Questa ipotesi è sbagliata?

7
Cast di un puntatore a funzione su un altro tipo
Diciamo che ho una funzione che accetta un void (*)(void*)puntatore a funzione da utilizzare come callback: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Ora, se ho una funzione come questa: void my_callback_function(struct my_struct* arg); Posso farlo in sicurezza? do_stuff((void (*)(void*)) &my_callback_function, NULL); Ho esaminato questa domanda e alcuni standard C che dicono …

14
Lo stack cresce verso l'alto o verso il basso?
Ho questo pezzo di codice in c: int q = 10; int s = 5; int a[3]; printf("Address of a: %d\n", (int)a); printf("Address of a[1]: %d\n", (int)&a[1]); printf("Address of a[2]: %d\n", (int)&a[2]); printf("Address of q: %d\n", (int)&q); printf("Address of s: %d\n", (int)&s); L'output è: Address of a: 2293584 Address of …
89 c  memory  stack 

9
Come usare nan e inf in C?
Ho un metodo numerico che potrebbe restituire nan o inf se ci fosse un errore, e per i test proposti vorrei forzarlo temporaneamente a restituire nan o inf per assicurarmi che la situazione sia gestita correttamente. Esiste un modo affidabile e indipendente dal compilatore per creare valori di nan e …
89 c  math 

2
Cosa sono vdso e vsyscall?
L'ho fatto sudo cat /proc/1/maps -vv Sto tentando di dare un senso all'output. Posso vedere molte librerie condivise mappate al segmento di mappatura della memoria come previsto. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 08:01 21233923 …
89 c  linux  linux-kernel  kernel  vdso 



3
Come usare glOrtho () in OpenGL?
Non riesco a capire l'utilizzo di glOrtho. Qualcuno può spiegare a cosa serve? Viene utilizzato per impostare l'intervallo del limite delle coordinate xy e z? glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); Significa che l'intervallo x, yez va da -1 a 1?
89 c++  c  opengl 

12
Stampa il testo invece del valore da C enum
int main() { enum Days{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; Days TheDay; int j = 0; printf("Please enter the day of the week (0 to 6)\n"); scanf("%d",&j); TheDay = Days(j); //how to PRINT THE VALUES stored in TheDay printf("%s",TheDay); // isnt working return 0; }
89 c  enums 

10
Passare un array come argomento a una funzione in C
Ho scritto una funzione contenente array come argomento e la chiamo passando il valore di array come segue. void arraytest(int a[]) { // changed the array a a[0]=a[0]+a[1]; a[1]=a[0]-a[1]; a[0]=a[0]-a[1]; } void main() { int arr[]={1,2}; printf("%d \t %d",arr[0],arr[1]); arraytest(arr); printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]); } Quello …


9
Perché a +++++ b non funziona?
int main () { int a = 5,b = 2; printf("%d",a+++++b); return 0; } Questo codice restituisce il seguente errore: errore: lvalore richiesto come operando di incremento Ma se inserisco spazi ovunque a++ +e ++b, allora funziona bene. int main () { int a = 5,b = 2; printf("%d",a++ + …
88 c  lvalue 

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.