Estoy intentando compilar un programa C en un sistema Linux. Tengo una declaración #include
para stdlib.h
.¿Puede -std = c99 evitar que mis #includes funcionen correctamente?
Cuando puedo compilar el programa con gcc
de la siguiente manera:
gcc -std=c99 -g -o progfoo progfoo.c progbar.c
puedo obtener advertencias sobre Implicit declaration of function [srand48, drand48, bzero, or close]
.
Compilar en cambio, como:
gcc -g -o progfoo progfoo.c progbar.c
no me da las advertencias, pero sí grito de mi uso de for
bucles (que era la razón de la adición de -std=c99
en el primer lugar).
Dado que man srand48
menciona incluyendo , que tengo, no estoy seguro de qué otra cosa podría ser el problema. Los bucles for
no son esenciales para nada (solo fueron para ahorrar tiempo al inicializar una matriz) así que no tengo problemas para eliminarlos, pero antes de hacerlo me gustaría confirmar si el estándar c99
está reemplazando algún aspecto de mi #include
declaraciones.
Estoy usando gcc 4.1.2-50 (Red Hat)
.
+1, pero en realidad son macros, no variables. –
Buen punto, @Matteo, tiendo a pensar en _macros_ como los que _hacen_ las cosas, como '#define halfOf (x) ((x)/2)', en oposición a solo "flags" para controlar la compilación. Pero estás en lo correcto y el uso de la "variable" de trabajo por mi cuenta puede conducir a la confusión con variables reales. Así que lo cambié según tu sugerencia. – paxdiablo
Derecha. Puede ser útil saber que cuando compila sin el indicador '-std =', está pidiendo '-std = gnu89', que es C89 más extensiones GNU, por lo que el C99 equivalente a este modo es' -std = gnu99 '. – caf