В программировании на плюсах я, скажем так, любитель, но на то, чтобы кое-что вам в этом вопросе объяснить, хватит даже меня. Вам, кстати, нужно быть повнимательнее к сообщениям об ошибках, которые вам выдают ваши инструменты. "Выходили ошибки" это сообщение с нулевым количеством информации, нужно знать конкретно, что было написано и после каких действий.
Поэтому вопрос, который вас на самом деле интересует, это "чем различаются GCC и Visual C++". Два самых радикальных отличия это следующие.
1. Платформа.
MSVC полагается на нативные библиотеки Windows, и, соответственно, поддерживает их. DirectX, Win32 API, WPF, даже стандартная библиотека C++ упакованы в DLL, доступные только на винде. Помните, как некоторые приложения Windows при запуске требуют, чтобы вы доустановили в систему
нечто под названием Microsoft Visual C++ Redistributable? Это, грубо и упрощённо говоря,
стандартная библиотека C++ плюс библиотеки специфичные для Windows типа
реализации заголовочного файла windows.h. Скомпилированные для использования в Windows.
Да,
в MSVC с недавних пор есть кросс-компиляция под Linux, но это извращения для эстетствующих профессионалов. Да и код можно писать кроссплатформенный, до определённой степени (до пользовательского интерфейса). Но всё же, если вы компилируете в MS Visual C++, вы, фактически, целитесь на то, что ваше приложение будет оптимизировано под технологии, доступные на Windows.
В то же время, для нормальной работы тулчейна GCC, ему нужно целое окружение из других утилит проекта GNU. Собственно, по этой причине существует именно весь проект MinGW, а не просто GCC, перекомпилированный под Windows. И здесь у нас ситуация обратная - то, что нативно доступно в Windows, нам не доступно, зато доступны некоторые вещи, родные для GNU/Linux, например, библиотека потоков
pthreads.
Там, наверное, есть детали, о которых я не знаю, те, кто программирует на плюсах каждый день, может меня поправить, но в целом ситуация выглядит именно так.
2. Поддержка C++
C++ язык развивающийся, и есть как минимум четыре мажорных релиза, серьёзно различающихся возможностями: C++98, C++11, C++17 и нынешний C++20.
Вторая ключевая разница между компиляторами C++ в том, какие возможности этих стандартов они поддерживают. Судя по всему, к 2022 году базовые возможности языка на уровне C++20 поддерживают оба этих компилятора, и дальше борьба уже идёт за C++23. А если вы присмотритесь внимательно к этой таблице по ссылке, то увидите, что кроме GCC и MSVC есть и много других компиляторов C++, например, подающий большие надежды
Clang. И, как подтверждение моих слов про MinGW выше, вместо GCC вы
можете в MinGW использовать Clang.
Вообще вопрос этот можно считать одним из древнейших холиваров в Сети, таких же как и "Vim против EMACS", "GNU/Linux против Windows против OSX", "четыре пробела или табуляция", "скобки или отступы" и многих других.