Articles of c99

¿Cómo decirle a GCC que un argumento de puntero siempre está alineado con dos palabras?

En mi progtwig tengo una función que hace una simple sum de vectores c[0:15] = a[0:15] + b[0:15] . La función prototipo es: void vecadd(float * restrict a, float * restrict b, float * restrict c); En nuestra architecture integrada de 32 bits hay una opción de carga / almacenamiento para cargar / almacenar palabras […]

Simulador / rango de instrucción de conmutación generada en c

¿Hay algún truco para admitir el rango de casos en ac (99?) O la instrucción de cambio de objective C? Sé que esto no es compatible para escribir algo como esto: switch(x) case 1: case 2..10: case 11: Pero estaba pensando que debería haber una manera de generar código con una macro #define. Por supuesto, […]

Tamaño máximo de size_t

Sé que en C tipo de retorno del operador sizeof es size_t siendo un tipo entero sin signo definido en . Lo que significa que su tamaño máximo debería ser 65535 como se indica en la norma C99 7.18.3 : limit of size_t SIZE_MAX 65535 Sin embargo, en gcc-4.8.2 archivo de cabecera stdint.h ha definido […]

¿Qué pueden hacer los seres humanos fuera del calificador restringido?

Si obtengo la palabra clave de restrict C99 correcta, calificar un puntero con ella es una promesa hecha de que los datos a los que hace referencia no se modificarán detrás del comstackdor a través del aliasing. Por el contrario, la forma en que entiendo el calificador const es como documentación impuesta por el comstackdor […]

C99 Longitud variable Array Tamaños máximos y tamaño de función

Estoy experimentando con el uso de Arrays de longitud variable (VLA) en mi código C y trato de aclarar mi comprensión de lo que deben y no deben hacer. Tengo el siguiente fragmento de mi función: void get_pdw_frame_usb(pdws_t *pdw_frame, pdw_io_t *pdw_io) { … unsigned char buf[pdw_io->packet_size]; unsigned char *pdw_buf; memset(buf, ‘\0’, sizeof(buf)); pdw_io es una […]

Comstackdor compatible con GNU Statement Expression

¿Qué comstackdores modernos soportan la expresión de Gnu Statement (lenguajes C y C ++)? ¿Qué versiones debo tener para usar una statement de expresiones? La expresión de statement es algo similar a ({ code; code; retval }) : int b=56; int c= ({int a; a=sin(b); a}) Ya conozco algunos comstackdores de este tipo: GCC> = […]

Sin firmar a la conversión firmada en C

¿Se garantiza que lo siguiente funcione o se defina su implementación? unsigned int a = 4294967294; signed int b = a; El valor de b es -2 en gcc. Desde C99 (§6.3.1.3 / 3) De lo contrario, el nuevo tipo está firmado y el valor no puede representarse en él; o bien el resultado está […]

Implementando la división de precisión simple como multiplicación de precisión doble.

Pregunta Para un comstackdor C99 que implementa aritmética IEEE 754 exacta, ¿existen valores de f , divisor de tipo float que f / divisor != (float)(f * (1.0 / divisor)) ? EDITAR: Al “implementar la aritmética IEEE 754 exacta” me refiero a un comstackdor que define correctamente FLT_EVAL_METHOD como 0. Contexto El comstackdor de CA […]

¿Por qué la función fgets está en desuso?

Del tutorial de progtwigción de GNU C : La fgets (“file get string”) es similar a la función gets. Esta función está obsoleta , lo que significa que está obsoleta y se recomienda encarecidamente que no la use, porque es peligrosa. Es peligroso porque si los datos de entrada contienen un carácter nulo, no se […]

GCC: exactitud de las advertencias estrictas de aliasing

Estoy tratando de verificar parte de mi código para ver si hay violaciones estrictas de aliasing, pero parece que me he perdido algo al intentar entender la regla de aliasing estricta. Imagina el siguiente código: #include int main( void ) { unsigned long l; l = 0; *( ( unsigned short * )&l ) = […]