Je me demandais s'il y a un moyen de dire au compilateur (je suis sur gcc version 4.1.2 20080704 (Red Hat 4.1.2-46) ou icc 11.1) pour lancer un avertissement chaque fois qu'une conversion implicite long-à-int a lieu. Par exemple, la compilation du fichier test.c
qui contient le code:C: avertit de la conversion implicite long à int
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int n = atol(argv[1]);
printf("int: %d\n", n);
long int N = atol(argv[1]);
printf("long: %ld\n", N);
return 0;
}
avec:
gcc -Wall -Wconversion test.c -o test
ne produit pas d'avertissement. L'exécution du binaire résultant comme
./test 12345678901
je reçois, comme prévu:
int: -539222987
long: 12345678901
que le nombre 12345678901 a survolée l'int, mais pas long. Je voudrais que le compilateur me dise quand quelque chose comme ça pourrait arriver. L'option -Wconversion de manière inattendue (pour moi) ne le fait pas.
Merci,
Michele
cela devrait être la réponse acceptée, six ans après :) –