Extern "c" для функции, экспортированной из DLL
Используя extern "c" для моего объявления функции, я могу избавиться от искажения имени в C++ и иметь только искажение имени в C. Однако я мог бы использовать.def файлы и добиться подобного результата. 1. Есть ли какая-либо другая цель объявить его как extern "c", если: AI хочет использовать его с той же версией того же инструмента, который создает DLL. BI хочет использовать его с приложением, скомпилированным в какой-то другой версии, но все же Microsoft Visual Studio. Я хочу взять DLL и использовать ее с другим компилятором. Я хочу использовать его на разных языках.
2. Изменяет ли extern "C" двоичный интерфейс и повышает ли он вероятность его работы с разными компиляторами? 3. Разные компиляторы могут иметь разные реализации соглашений о вызовах. Приводит ли использование extern "C" к реализации двоичного интерфейса для языка C? Могу ли я использовать extern "C", если я хочу, чтобы мои функции экспорта DLL для приложений создавались несколькими самыми популярными компиляторами, независимо от того, какая у них версия?