Я пишу общую библиотеку C++ для используемой программы C. Однако у меня есть вопрос о extern
и extern "C"
.extern и extern «C» для переменных
Рассмотрим следующий код
Мой заголовочный файл выглядит так:
#ifdef __cplusplus
extern "C" int global;
extern "C" int addnumbers(int a, int b);
#else
extern int global;
#endif
Это отлично работает; Мне просто нужно объявить
int global;
в моем .cpp или моем .c файле. Однако я не понимаю:
В чем разница между extern "C"
и extern
? Я пробовал комментировать extern "C" int global
, и он работает! Зачем?
Я знаю, что extern "C"
используется для соединения C. Вот почему у меня есть extern "C" int addnumbers(int,int)
. Другими словами, если я хочу написать C++-функцию, которая будет использоваться в программе C, я пишу extern "C"
. Теперь, как насчет глобальных переменных - ситуация здесь, я думаю? Я хочу, чтобы программа C использовала переменную C++ с именем global
, но я могу использовать extern
не extern "C"
. Почему это? Это неинтересно для меня.
Комментарий: Я не думаю, что это дубликат, потому что я спрашиваю, в чем разница, когда вы используете его для переменных и функций.
Я не думаю, что это дубликат, потому что я спрашиваю, в чем разница, когда вы используете его для переменных и функций. – Thenewstockton
Я приглашаю вас сделать это намного яснее в вашем вопросе. –
Несмотря на то, что я изо всех сил пытаюсь обнаружить разницу между тем, какая разница между «extern» C »и« extern'_ »и« какая разница между «extern» C »и« extern »для переменных_. Возможно, вопрос заключается в том, что «extern» C «отличается при использовании для функций vs переменными? _, А ответ просто« нет » –