Честно говоря, для обучения подойдёт любой компилятор.
Если будете писать в CodeBlocks, то используйте любой gcc.
Нюансы могут появиться:
- при освоении c++ - поддержка актуальных стандартов может различаться у разных компиляторов,
- при опеределённых требованиях к оптимизации - по скорости, по ОЗУ, по размеру исполняемого кода, для определённых архитектур/конкретных процессоров и т. п. (это в основном про эмбеддед),
- при использовании специфичных SDK, заточенных на конкретные инструменты разработки (это тоже про эмбеддед).
Ниже иллюстрация про случай, где выбор компилятора действительно был важен.
По работе в одном из наших проектов было большое желание перейти с Keil на gcc ради использования нормальных IDE и ради сборки под любые архитектуры, в т. ч. Cortex-M, Cortex-A, x86, amd64 и с разными ОС - FreeRTOS, Linux, Windows. Но были и ограничения - в ряде случаев для нас был критичен размер бинарника, а в ряде других случаев - эффективность использования ОЗУ.
Ни одна из опробованных версий gcc "из коробки" не подходила, то есть прошивка либо не влезала в выделенную для неё область флеш-памяти, либо не могла работать из-за нехватки ОЗУ.
Меняли версии компилятора, меняли опции компиляции, в итоге дошли до пересборки самого gcc с разными опциями. Так вот, мы так и не сумели заставить gcc генерить такой же эффективный по нашим критериям код для микроконтроллеров, как Keil. Тем не менее, добились определённых позитивных результатов и на gcc всё-таки перешли.