Недавно я установил на своем ноутбуке среду 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, чтобы сделать проверки времени компиляции еще строже?