Este código me da advertencias:Cómo leer datos en una variable time_t usando scanf()?
$ cat test.c
#include<stdio.h>
#include<time.h>
int main() {
time_t t;
scanf("%lld", &t);
printf("%lld\n", t);
return 0;
}
$ gcc test.c -o test
test.c: In function ‘main’:
test.c:7: warning: format ‘%lld’ expects type ‘long long int *’, but argument 2 has type ‘time_t *’
test.c:8: warning: format ‘%lld’ expects type ‘long long int’, but argument 2 has type ‘time_t’
$
Aparte de las advertencias, el código funciona como se esperaba.
¿Qué debo hacer para no recibir las advertencias en la compilación (no compila los trucos de pragma, por favor)?
Usaría el tamaño más grande posible para estar seguro. Y 'strtoull' sería una mejor opción que' scanf'. –
@R ..: 'strtoll()' ya que 'time_t' generalmente está firmado. –
+1. De hecho, POSIX permite que 'time_t' sea un tipo flotante real o entero. – dreamlax