Допустим, у меня есть программа на C ++, и я хочу вызывать функции из файла объектов C в ней.Ограничение состоит в том, что мне не разрешено вносить какие-либо изменения в исходные файлы языка C.
В этом случае я бы включил заголовок C как extern "C" в мой файл C ++,вызовите функцию, скомпилируйте объект C, используя gcc -c , и передайте результат в g ++ вместе с фактическими источниками C ++.
Я думаю, что я бы тожеДля этого нужно поместить C-заголовок # include в именованный блок namespace в файле C ++, чтобы поддерживать чистоту локального пространства имен (кто знает, какие еще причудливые вещи есть в .h file).
Что теперь, если мне нужно вызывать функции из двух объектных файлов на языке C.Допустим, у них разные подписи.Но в объектных файлах также есть несколько дублирующих функций.Не взорвется ли мой компоновщик в этот момент, если я попытаюсь передать оба объекта в g ++ одновременно?То же самое для глобалов.
Опять же: мне не разрешено изменять ЛЮБОЙ источников Си.В противном случае я бы просто переименовал файлы .c в .cxx, обернул их содержимое и содержимое соответствующих заголовков внутри namespace bla {} и передал все в g ++ .
(Да, C не является подмножеством C ++, как уже упоминалось в одном из комментариев)