Это зависит. В общем, Standard C ++ - это переносимый язык общего назначения, который можно скомпилировать для запуска на любой системе или платформе, имеющей совместимый со стандартом компилятор.
Однако многие из более «интересных» функций, которые вы, возможно, захотите добавить в типичное приложение, не являются частью Standard C ++. Это включает в себя GUI, потоки, сокеты и низкоуровневые вызовы OS API. Как правило, они не переносимы, и части кода, использующие эти функции, необходимо будет реализовать отдельно для каждой операционной системы или платформы.
К счастью, это не так страшно, как кажется, потому что существует множество кроссплатформенных библиотек, которые уже столкнулись с трудностями при этом. Например, библиотека потоков Boost уже содержит код потоков, написанный для разных платформ или операционных систем, но все это абстрагировано от красивого унифицированного API, который может использоваться переносимо в коде приложения C ++.
Кроме того, большая часть нестандартного кода C ++ по-прежнему соответствует некоторым стандартам, таким как POSIX , который поддерживается на разных платформах. Например, большинство систем UNIX, включая Linux и Mac OS X, поддерживают потоки POSIX (API-интерфейс pthread).