Я думаю, что вы ошибаетесь ... Внешний C предназначен для отключения функции искажения; поэтому, если вы делаете это только для заголовочных файлов, при попытке связать искаженный объектный код объявленные имена функций не будут совпадать с именами функций в объектном файле.
В любом случае, внешний C не добавляет переносимости, если все приложение компилируется и связывается с одним и тем же компилятором C ++, оно предназначено для смешивания библиотек C с кодом C ++.
Если ваш код находится в общем подмножестве C и C ++, вы уже должны быть в состоянии скомпилировать его с помощью любого компилятора, но я не вижу причины для этого (кроме работы по принципу наименьшего удивления, так как C ++ более строг с некоторыми вещами).