Articles of c89

Declaraciones de variables C después del encabezado de la función en la definición

Al leer algún código fuente de FreeBSD (Ver: radix.h líneas 158-173), encontré declaraciones de variables que seguían el “encabezado de la función” en la definición. ¿Es esto válido en ISO C (C99)? ¿Cuándo debería hacerse esto en el código de producción en lugar de simplemente declarar las variables dentro del “encabezado de la función”? ¿Por […]

¿Por qué estaba mezclando declaraciones y códigos prohibidos hasta C99?

Recientemente me convertí en asistente de profesor de un curso universitario que enseña principalmente C. El curso se estandarizó en C90, principalmente debido al amplio respaldo del comstackdor. Uno de los conceptos muy confusos para los novatos C con experiencia previa en Java es la regla de que las declaraciones de variables y el código […]

¿Cuáles son las principales diferencias entre ANSI C y K & R C?

El artículo de Wikipedia sobre ANSI C dice: Uno de los objectives del proceso de estandarización de ANSI C fue producir un superconjunto de K & R C (el primer estándar publicado), que incorpora muchas de las características no oficiales introducidas posteriormente. Sin embargo, el comité de estándares también incluyó varias características nuevas, como prototipos […]

Declaración recursiva de puntero a función en C

Me gustaría declarar una función que devuelve un puntero a una función del mismo tipo. Me gustaría usarlo para implementar máquinas de estado como la siguiente: typedef event_handler_t (*event_handler_t)(event_t*); // comstacktion error event_handler_t state2(event_t* e); event_handler_t state1(event_t* e) { switch(e->type) { //… case SOME_EVENT: return state2; //… } } event_handler_t state2(event_t* e) { switch(e->type) { […]

Escriba para usar para representar un byte en ANSI (C89 / 90) C?

¿Existe un método de quejas estándar para representar un byte en ANSI (C89 / 90) C? Sé que, la mayoría de las veces, un char resulta ser un byte, pero tengo entendido que no se garantiza que sea así. Además, hay stdint.h en el estándar C99, pero ¿qué se usó antes del C99? Tengo curiosidad […]

¿Cuál es la diferencia entre C, C99, ANSI C y GNU C?

Empecé a progtwigr práctica en codechef y me confundí con la diferencia entre C y C99. ¿Qué significa C aquí? ¿Es C89? Verifique los idiomas en la parte inferior de esta presentación . Contiene C y C99. Encontré en Internet algo llamado GNU C. ¿Hay una C diferente para los sistemas Linux / Unix? ¿Son […]

Usando M_PI con el estándar C89

Estoy usando C y tratando de obtener acceso a la constante M_PI (3.14159 …). Importé el archivo de encabezado math.h, pero la constante M_PI aún no estaba definida. A través de algunas búsquedas en StackOverflow, he descubierto que necesito agregar #define _USE_MATH_DEFINES a mi código (vea el código de ejemplo a continuación). Esto funciona bien […]

¿ANSI C o ISO C especifica qué debería ser -5% 10?

Me parece recordar que ANSI C no especificó qué valor se debe devolver cuando cualquier operando de un operador de módulo es negativo (solo que debe ser consistente). ¿Se especificó más tarde o siempre se especificó y recuerdo incorrectamente?

¿Habilitar VLA (matrices de longitud variable) en MS Visual C ++?

¿Cómo puedo habilitar el uso de VLA, matrices de longitud variable como se define en C99, en MS Visual C ++ o eso no es posible en absoluto? Sí, sé que el estándar de C ++ se basa en C89 y que los VLA no están disponibles en C89 y por lo tanto no están […]

Colocación de statement variable en C

Durante mucho tiempo pensé que en C, todas las variables tenían que declararse al comienzo de la función. Sé que en C99, las reglas son las mismas que en C ++, pero ¿cuáles son las reglas de colocación de declaraciones variables para C89 / ANSI C? El siguiente código comstack con éxito con gcc -std=c89 […]