Нет такой вещи как "Straight C ++". В коде всегда будут некоторые библиотечные функции, которые вы вызываете здесь и там, и даже если вы будете очень осторожны с этим, будут некоторые функции, которые нужно будет вызывать просто кодом, генерируемым компилятором. Например, если у вас есть следующий цикл:
for( int i = 0; i < count; i++ )
array1[i] = array2[i];
Компилятор заменит его кодом, который просто копирует память. И если вы компилируете для меньшего размера вместо скорости, это будет вызов функции, очень похожей на memmove ().
Кроме того, у вас могут быть некоторые операции с плавающей запятой, для которых не существует прямых эквивалентных инструкций x86; они также будут реализованы с помощью вызовов функций. И этот список можно продолжить.
Это не делает вашу кодовую платформу зависимой, потому что на другой платформе компилятор этого плафа скомпилирует тот же ваш код, чтобы идти с любой средой выполнения C ++ для этой платформы.
К счастью, среда выполнения C ++ не обязательно должна быть отдельной сущностью от вашего приложения. Проверьте параметры компилятора и компоновщика; Вы должны быть в состоянии создать один исполняемый файл, который содержит оба. Если вы обнаружили, что g ++ не требует отдельного времени выполнения, это потому, что он делает именно это по умолчанию.