У меня была эта проблема при переносе старого кода C на C ++. Проблема была в том, что это был проект, который был подключен к базе данных, и я хотел портировать базу данных на c ++, но не на все остальное. База данных вытягивала некоторые зависимости C, которые не могли быть перенесены, поэтому мне нужен был код C, который перекрывал и базу данных, и другой проект для компиляции в g ++, а также в gcc ...
Решением этой проблемы является определение всех переменных как extern в файле .h . затем, когда вы компилируете в gcc или g ++, он сообщит о символах, отсутствующих в файлах .c. Поэтому отредактируйте файлы .c в сообщениях об ошибках и вставьте объявление в все файлы .c, которым нужны переменные. Примечание: вам, возможно, придется объявить это в нескольких файлах .c, что меня бросило и почему я застрял на этой проблеме целую вечность.
В любом случае это решило мою проблему, и код теперь аккуратно компилируется как в gcc, так и в g ++.