Вопросы с тегом 'extern-c'
`extern "C" используется для обозначения того, что функции и переменные С++ должны иметь C-ссылку вместо С++-связи, позволяя C-и С++-модулям взаимодействовать друг с другом. Тег extern-c должен использоваться только на вопросах С++, где предметом обсуждения является поведение деклараций с "extern "C".
13
Каков эффект extern "C" в С++?
Что именно помещает extern "C" в код С++?
Например:
extern "C" {
void foo();
}
25 июн. '09 в 2:10
4
Объединение С++ и C - как работает #ifdef __cplusplus?
Я работаю над проектом с большим количеством устаревшего кода C. Мы начали писать на С++, имея в виду, наконец, преобразовать устаревший код. Я немного смущен тем, как взаимодействуют C и С++. Я понимаю, что, завернув код C с помощью extern "C...
24 сент. '10 в 17:03
11
Зачем нам нужен extern "C" {#include <foo.h>} в С++?
Зачем нам нужно использовать:
extern "C" {
#include <foo.h>
}
В частности:
Когда мы должны его использовать?
Что происходит на уровне компилятора/компоновщика, который требует от нас его использовать?
Как с точки зрения компиляции/связ...
15 сент. '08 в 23:19
9
Почему функции C не могут быть названы?
Недавно у меня было интервью, и один вопрос спросил, что такое extern "C" в коде на С++. Я ответил, что использовать C-функции в С++-коде, поскольку C не использует имя-mangling. Меня спросили, почему C не использует шифрование имен, и, честно говор...
14 апр. '16 в 11:34
4
Вызвать функцию C из кода С++
У меня есть функция C, которую я бы хотел вызвать из С++. Я не мог использовать подход "extern "C" void foo()", потому что функция C не была скомпилирована с использованием g++. Но он компилируется с использованием gcc. Любые идеи о том, как вызвать ...
31 мая '13 в 6:27
7
Как вызвать функцию С++ из C?
Я знаю это.
Вызов функции C из С++:
Если мое приложение было на С++, и мне пришлось вызывать функции из библиотеки, написанной на C. Тогда я бы использовал
//main.cpp
extern "C" void C_library_function(int x, int y);//prototype
C_library_functi...
30 апр. '10 в 11:36
7
Что означает, что имя или тип имеют определенную языковую связь?
Согласно (c) ANSI ISO/IEC 14882: 2003, стр. 127:
Спецификация привязки привязки. Когда спецификация привязки привязки, самая внутренняя определяет язык. Спецификация связи не устанавливает область действия. Спецификация привязки должна выполняться ...
23 апр. '11 в 11:29
6
Является ли extern "C" обязательным только для объявления функции?
Я написал функцию C++, которую мне нужно вызывать из программы на Си. Чтобы сделать его вызываемым из C, я указал extern "C" в функции объявление. Затем я скомпилировал код C++, но компилятор (Dignus Systems/C++) сгенерировал искаженное имя для функц...
04 сент. '09 в 18:30
5
static vs extern "C" / "С++"
В чем разница между статической функцией-членом и внешней связью "C"? Например, при использовании "makecontext" в С++ мне нужно передать указатель на функцию. Google рекомендует использовать внешнюю ссылку "C" для него, потому что "makecontext"...
26 февр. '09 в 19:58
10
Можно ли подклассифицировать C-структуру на С++ и использовать указатели на структуру в C-коде?
Есть ли побочный эффект при этом:
C-код:
struct foo {
int k;
};
int ret_foo(const struct foo* f){
return f.k;
}
Код С++:
class bar : public foo {
int my_bar() {
return ret_foo( (foo)this );
}
};
Там extern "C" вок...
24 сент. '08 в 13:56
4
Могут ли функции С++ помечены как Extern "C" throw?
У меня есть функции С++, которые я хочу объявить, используя extern "C", хотя они только вызывается в коде на С++. Да, я знаю, это странно, но это то, что я хотел бы сделать для согласованности, так как мы смешали объявления C и С++. Я просто хочу уб...
06 апр. '13 в 0:31
9
Как работает внешняя декларация "С"?
Я беру курс языков программирования, и мы говорим о объявлении extern "C".
Как это объявление работает на более глубоком уровне, кроме "он взаимодействует с C и С++"? Как это влияет на привязки, которые также имеют место в программе?
08 мар. '10 в 17:49
2
Когда использовать extern "C" в С++?
Возможный дубликат: Зачем нам нужен extern "C" {#include < foo.h > } в С++?
Я часто видел программы, закодированные как:
extern "C" bool doSomeWork() {
//
return true;
}
Почему мы используем блок extern "C"? Можем ли мы заменить ...
18 авг. '09 в 6:30
2
Есть ли причина использовать extern "C" в заголовках без методов?
Я часто сталкиваюсь с файлами заголовков C, которые содержат extern "C" охранники,
но не содержат никаких фактических функций. Например:
/* b_ptrdiff.h - base type ptrdiff_t definition header */
#ifndef __INCb_ptrdiff_th
#define __INCb_ptrdiff_th
...
04 нояб. '15 в 16:02
7
Когда использовать внешние слова "С" простыми словами?
Возможно, я не понимаю различия между C и С++, но когда и зачем нам нужно использовать
extern "C" {
? По-видимому, это "соглашение о связи".
Я кратко прочитал об этом и заметил, что все файлы заголовков .h, входящие в состав MSVS, окружают его ко...
09 мая '10 в 6:11