Я недавно настроил среду MinGW + MSYS на своем ноутбуке, чтобы проверить, как обстоят дела с поддержкой Netbeans C / C ++. Кажется, все работает нормально, но во время тестирования я заметил разницу между GCC и компилятором Microsoft cl.exe.
Вот пример программы:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(void) {
int i_max = INT_MAX;
char c_max = CHAR_MAX, c;
c = i_max;
printf("i_max: %d, c_max: %d, c: %d\n", i_max, c_max, c);
return EXIT_SUCCESS;
}
Вывод:
i_max: 2147483647, c_max: 127, c: -1
Как вы можете видеть в коде выше, я присваиваю int для char. Разве это не должно выдавать предупреждение о возможной потере данных? Компилятор Microsoft (который я настроил очень строго) выдает предупреждение, а GCC - нет.
Вот параметры GCC, которые я использую:
-g -Werror -ansi -pedantic -Wall -Wextra
Мне не хватает какой-то опции GCC, чтобы сделать проверки времени компиляции еще строже?