Daniro_San
@Daniro_San
Программист

Разработка под Windows — MSVC или TDM GCC (MinGW)?

До недавнего времени использовал CodeLite + TDM GCC и был всем доволен.
Но, попробовав (речь идет о чистом C++, конечно же) Visual Studio был приятно удивлен мощью этой IDE.
Единственное, что меня волнует - качество MSVC студии.
Часто слышал, что он не полностью соответствует C++14.
При переносе пары проектов в неё, я сразу заметил разницу:
1) Разное содержимое одних и тех же хедеров
Например в TDM GCC operator >> для std::istream и std::string уже идёт с <iostream> (где то внутри его инклудов).
В студии нужно подключить <string>.
2) MSVC спокойно компилирует нечто вроде
std::cout<<std::string(
std::istream_iterator<char>(
std::ifstream("CppExpr.vcxproj")), std::istream_iterator<char>());
(MinGW выкидывает ошибку) , но при этом не компилирует код, если не-void функция не возвращает значение (MinGW компилирует).
3) Использование инициализации списком для структур (POD) с уже прединициализированными полями:
struct Point {
    int X = 0;
    int Y = 0;
};
Point A { 1, 2 };

Тут MinGW с -std=c++14 скомпилирует код, а MSVC - нет.
4) Ну и конечно же рантайм MSVC.
Даже не знаю, хорошо это или плохо.

В общем, прошу исходя из реального опыта сказать мне какой из компиляторов будет лучше.
  • Вопрос задан
  • 2101 просмотр
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
3) Использование инициализации списком для структур (POD) с уже прединициализированными полями:

Это C++11. Хорошее дело. MinGW поддерживал, пока стандарт ещё вырабатывался. MSVC начал было, да бросил и довёл до конца аж в 2015!!

1) Разное содержимое одних и тех же хедеров

Не выбивается из стандарта.

2) MSVC спокойно компилирует нечто вроде

MSVC ошибается, таким образом неконстантную ссылку передавать запрещено.

но при этом не компилирует код, если не-void функция не возвращает значение

Хорошая диагностика, но это лишь warning, а не error. Компилятору трудно знать, возможен ли тот или иной путь исполнения кода.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Подключите к студии MinGW с его хейдерами и будет все как и было.
Ответ написан
Комментировать
Попробуйте VS 15 Preview -- не путать с 2015. Насколько я знаю, C++14 там поддерживается достаточно полно. Естественно, чтобы код компилировался и под msvc, и под gcc, часто приходится прикладывать немало усилий. В этом отношении ничего не собирается меняться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы