Это будет зависеть от используемой вами стандартной библиотеки, а не от компилятора.
Как правило, с g++
вы будете использовать libstdc++
, то есть библиотеку GNU C ++ (которая в свою очередь зависит от glibc
, то есть библиотека GNU C).По умолчанию этот выглядит так, как будто он использует связь C для имен C.Если вы посмотрите на сами источники, вы в настоящее время увидите 4 различных набора заголовков C.
В любом случае вам не следует полагаться на это, и это также может измениться без предупреждениядаже между выпусками.
В идеале, если вам необходимо экспортированное имя по какой-либо причине (искаженное или нет), вы должны напрямую выбрать его из общего объекта или из заголовков, которые использует ваш компилятор, вместополагаясь на данную связь.
Сказав это, основные стандартные библиотеки / компиляторы предоставляют их как extern "C"
, даже MSVC в Windows;и даже если вы используете заголовки C ++ cname
(конечно, в глобальном пространстве имен).