я вижу некоторый код в C++ с использованием extern "C"
в начале файла, как это:Как работает extern «C» на C++?
#ifdef __cplusplus
extern "C" {}
#endif
Что это значит? Как это работает?
я вижу некоторый код в C++ с использованием extern "C"
в начале файла, как это:Как работает extern «C» на C++?
#ifdef __cplusplus
extern "C" {}
#endif
Что это значит? Как это работает?
Это, вероятно, не нравится, но больше как:
#ifdef __cplusplus
extern "C" {
#endif
//some includes or declarations
#ifdef __cplusplus
}
#endif
Это говорит компилятору использовать C
имя коверкая для всего, что объявленная внутри директив.
, как вы есть сейчас:
#ifdef __cplusplus
extern "C" {}
#endif
просто мертвый код.
, но код, который я видел, это: #ifdef __cplusplus extern «C» {} #endif, так это неправильный код? –
@ratzip это не так, это просто мертвый код. Он ничего не делает. –
Он сообщает компилятору (а не компоновщику) использовать C-соглашения для функций, а не C++. Это связано не только с названием mangling, но и с условными обозначениями для передачи аргументов и, возможно, с другими вещами. –
Указывает linkage specification.
Он сообщает компоновщику, как связать код.
Полезно, если вы хотите mix C and C++ code.
@Nawaz: И кто сказал так? «C» - есть. –
Extern "C"
- сообщите компилятору, что отмеченная функция скомпилирована в стиле C.
Используется для информирования компилятора об отключении имени языка C++ для функций, определенных в фигурных скобках. http://en.wikipedia.org/wiki/Name_mangling
+1 Ты сказал в одной строке, что я собирался сказать в 100. Хорошо. –
Хорошая информация о extern «c» здесь: http://stackoverflow.com/questions/1041866/what-does-extern-c-in-c-source –