Мне было интересно, есть ли способ сказать компилятору (я на gcc версии 4.1.2 20080704 (Red Hat 4.1.2-46) или icc 11.1) выдавать предупреждение всякий раз, когда long-to-int происходит неявное преобразование. Например, компиляция файла test.c
, который содержит код:
#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;
}
с:
gcc -Wall -Wconversion test.c -o test
не выдает никаких предупреждений. Запуск получившегося двоичного файла как
./test 12345678901
Получаю, как и ожидалось:
int: -539222987
long: 12345678901
, поскольку число 12345678901 переполнило int, но не long.
Я хотел бы, чтобы компилятор сообщал мне всякий раз, когда что-то подобное может произойти. Опция -Wconversion неожиданно (для меня) этого не делает.
Спасибо
Michele