Preguntas etiquetadas con c

C es un lenguaje de programación de uso general utilizado para la programación del sistema (SO e incrustado), bibliotecas, juegos y multiplataforma. Esta etiqueta debe usarse con preguntas generales sobre el lenguaje C, como se define en el estándar ISO 9899 (la última versión, 9899: 2018, a menos que se especifique lo contrario; también etiquete las solicitudes específicas de la versión con c89, c99, c11, etc.). C es distinto de C ++ y no debe combinarse con la etiqueta C ++ en ausencia de una razón racional.

4
¿Por qué memmove es más rápido que memcpy?
Estoy investigando puntos críticos de rendimiento en una aplicación que pasa el 50% de su tiempo en memmove (3). La aplicación inserta millones de enteros de 4 bytes en matrices ordenadas y utiliza memmove para desplazar los datos "hacia la derecha" para dejar espacio para el valor insertado. Mi expectativa …
89 c++  c  performance  memory 

4
GDB: romper si la variable es igual al valor
Me gusta hacer que GDB establezca un punto de interrupción cuando una variable es igual a algún valor que establecí, probé este ejemplo: #include <stdio.h> main() { int i = 0; for(i=0;i<7;++i) printf("%d\n", i); return 0; } Salida de GDB: (gdb) break if ((int)i == 5) No default breakpoint address …
89 c  gdb 


3
Threadsafe vs reentrante
Recientemente, hice una pregunta, con el título "¿Es seguro el hilo de malloc?" , y dentro de eso pregunté, "¿Malloc es reentrante?" Tenía la impresión de que todos los reentrantes son seguros para subprocesos. ¿Es incorrecta esta suposición?

7
Conversión de un puntero de función a otro tipo
Digamos que tengo una función que acepta un void (*)(void*)puntero de función para usar como devolución de llamada: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Ahora, si tengo una función como esta: void my_callback_function(struct my_struct* arg); ¿Puedo hacer esto de forma segura? do_stuff((void (*)(void*)) &my_callback_function, NULL); He examinado esta pregunta y he …

14
¿La pila crece hacia arriba o hacia abajo?
Tengo este fragmento de código en 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); La salida es: Address of a: 2293584 Address …
89 c  memory  stack 

9
¿Cómo usar nan e inf en C?
Tengo un método numérico que podría devolver nan o inf si hubiera un error, y para las pruebas me gustaría forzarlo temporalmente a devolver nan o inf para asegurar que la situación se maneje correctamente. ¿Existe una forma confiable e independiente del compilador de crear valores de nan e inf …
89 c  math 

2
¿Qué son vdso y vsyscall?
yo hice sudo cat /proc/1/maps -vv Estoy tratando de darle sentido a la salida. Puedo ver muchas bibliotecas compartidas asignadas al segmento de mapeo de memoria como se esperaba. 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 …
89 c  linux  linux-kernel  kernel  vdso 

3
¿Qué es exactamente la regla "como si"?
Como dice el título, ¿Qué es exactamente la regla "como si"? Una respuesta típica que se obtendría es: La regla que permite todas y cada una de las transformaciones de código que no cambian el comportamiento observable del programa. De vez en cuando seguimos obteniendo comportamientos de ciertas implementaciones que …
89 c++  c  optimization  c++-faq  as-if 


10
Diferencia entre const y const volátil
Si declaramos una variable como volatilecada vez que se actualiza el valor nuevo Si declaramos una variable como, constentonces el valor de esa variable no cambiará Entonces, const volatile int temp; ¿de qué sirve declarar la variable tempcomo se indicó anteriormente? ¿Qué pasa si declaramos como const int temp?
89 c  embedded 

10
CMake no puede determinar el lenguaje del enlazador con C ++
Estoy intentando ejecutar un programa cmake hello world en Windows 7 x64 con Visual Studio 2010 y Cygwin, pero parece que ninguno de los dos funciona. Mi estructura de directorio es la siguiente: HelloWorld -- CMakeLists.txt -- src/ -- -- CMakeLists.txt -- -- main.cpp -- build/ Hago una cd buildseguida …
89 c++  c  cmake 


9
¿Por qué no funciona a +++++ b?
int main () { int a = 5,b = 2; printf("%d",a+++++b); return 0; } Este código da el siguiente error: error: lvalue requerido como operando de incremento Pero si pongo espacios en todas partes a++ +y ++b, entonces funciona bien. int main () { int a = 5,b = 2; …
88 c  lvalue 

13
¿Cómo funciona este programa?
#include <stdio.h> int main() { float a = 1234.5f; printf("%d\n", a); return 0; } Muestra un 0!! ¿Cómo es eso posible? Cual es el razonamiento? Deliberadamente he puesto un %den la printfdeclaración para estudiar el comportamiento de printf.
88 c++  c  memory  printf  endianness 

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.