Этот ответ для нетерпеливых / у которых есть крайние сроки, только часть / простое объяснение ниже:
- в C ++ вы можете иметь одно и то же имя в классе через перегрузку (например, поскольку все они с одинаковым именем не могут быть экспортированы как есть из dll и т. Д.), Решение этих проблем заключается в том, что они конвертируются в разные строки (называемые символами), символы учитывают имя функции, а также аргументы, поэтому каждая из этих функций, даже с одинаковым именем, может быть однозначно идентифицирована (также называется, искажение имени)
- в C, у вас нет перегрузки, имя функции уникально (поэтому отдельная строка для уникального определения имени функции не требуется, поэтому символом является само имя функции)
So
в C ++, с изменением названия уникально идентифицирует каждую функцию
в C даже без искажения имени однозначно идентифицирует каждую функцию
Чтобы изменить поведение C ++, то есть указать, что искажение имени не должно происходить для конкретной функции, вы можете использовать extern "C" перед именем функции, по любой причине, например, экспорт функции с определенным именем из DLL для использования ее клиентами.
Прочитайте другие ответы, для более подробных / более правильных ответов.