Стандарт C++ 7.5.2 dcl.link, говорит:
Связь между C++ и не-C++ фрагментов кода может быть достигнуто с использованием тяг-спецификации:
linkage-specification:
extern string-literal { declaration-seqopt}
extern string-literal declaration
string-literal указывает на требуемую языковую привязку. Этот Международный стандарт определяет семантику для строковых литералов «C» и «C++». Использование строкового литерала, отличного от «C» или «C++», является условно поддерживаемым, с семантикой, определенной реализацией. [Примечание: Следовательно, спецификация привязки со строковым литералом, который , неизвестный реализации, требует диагностики. -end note] [ Примечание: рекомендуется, чтобы написание строкового литерала было взято из документа, определяющего этот язык. Например, Ada (не ADA) и Fortran или FORTRAN, в зависимости от винтажа. -end note]
В принципе, разработчики могут выбрать поддержку других спецификаций связи, чем C и C++.
На практике, однако, на всех современных платформах C-связь является самым низким общим знаменателем. Как правило, в эти дни двоичный interop для языков, отличных от C, использует C-связь. На широко используемых современных платформах вы не увидите ничего, кроме связей C и C++.
Нет, потому что почти все остальное совместимо с C и его вызовами. –
Существует также внешний паскаль ... – Almo
«C» - единственная такая привязка *, требуемая стандартом C++ *, но компиляторы могут предоставить больше; поэтому это постоянная строка. extern «FORTRAN» будет иметь большой смысл для компиляторов, у которых есть как C++, так и FORTRAN. Я бы не ожидал увидеть extern «Lisp», хотя бы потому, что среда Lisp имеет тенденцию быть ее собственным монолитом. – zwol