Работа с C ++ не оптимальна по ряду причин, просто потому, что вы работаете не поверх операционной системы, и, например, динамического распределения памяти просто не существует. Нет нового, нет malloc. Я не имею в виду, что вы не можете перейти на C ++, но я бы воздержался.
Я использовал Mikroe C для PIC, все в порядке, но я бы выбрал MPLAB, просто вопрос личного вкуса.
Если хочешь идти в ARM, иди в GCC.