Вопросы с тегом 'extern-c'

`extern "C" используется для обозначения того, что функции и переменные С++ должны иметь C-ссылку вместо С++-связи, позволяя C-и С++-модулям взаимодействовать друг с другом. Тег extern-c должен использоваться только на вопросах С++, где предметом обсуждения является поведение деклараций с "extern "C".
12
ответов

Каков эффект extern "C" в С++?

Что именно помещает extern "C" в код С++? Например: extern "C" { void foo(); }
задан 25 июня '09 в 5:10
3
ответов

Объединение С++ и C - как работает #ifdef __cplusplus?

Я работаю над проектом с большим количеством устаревшего кода C. Мы начали писать на С++, имея в виду, наконец, преобразовать устаревший код. Я немного смущен тем, как взаимодействуют C и С++. Я понимаю, что, завернув код C с помощью extern "C...
задан 24 сент. '10 в 20:03
9
ответов

Почему функции C не могут быть названы?

Недавно у меня было интервью, и один вопрос спросил, что такое extern "C" в коде на С++. Я ответил, что использовать C-функции в С++-коде, поскольку C не использует имя-mangling. Меня спросили, почему C не использует шифрование имен, и, честно говор...
задан 14 апр. '16 в 14:34
10
ответов

Зачем нам нужен extern "C" {#include <foo.h>} в С++?

Зачем нам нужно использовать: extern "C" { #include <foo.h> } В частности: Когда мы должны его использовать? Что происходит на уровне компилятора/компоновщика, который требует от нас его использовать? Как с точки зрения компиляции/связ...
задан 16 сент. '08 в 2:19
3
ответов

Вызвать функцию C из кода С++

У меня есть функция C, которую я бы хотел вызвать из С++. Я не мог использовать подход "extern "C" void foo()", потому что функция C не была скомпилирована с использованием g++. Но он компилируется с использованием gcc. Любые идеи о том, как вызвать ...
задан 31 мая '13 в 9:27
5
ответов

Как вызвать функцию С++ из C?

Я знаю это. Вызов функции C из С++: Если мое приложение было на С++, и мне пришлось вызывать функции из библиотеки, написанной на C. Тогда я бы использовал //main.cpp extern "C" void C_library_function(int x, int y);//prototype C_library_functi...
задан 30 апр. '10 в 14:36
7
ответов

Что означает, что имя или тип имеют определенную языковую связь?

Согласно (c) ANSI ISO/IEC 14882: 2003, стр. 127: Спецификация привязки привязки. Когда спецификация привязки привязки, самая внутренняя определяет язык. Спецификация связи не устанавливает область действия. Спецификация привязки должна выполняться ...
задан 23 апр. '11 в 14:29
6
ответов

Является ли extern "C" обязательным только для объявления функции?

Я написал функцию С++, которую мне нужно вызвать из программы C. Чтобы сделать его вызываемым из C, я указал extern "C" в объявлении функции . Затем я скомпилировал код С++, но компилятор (Dignus Systems/С++) создал функцию измененное имя для этой ф...
задан 04 сент. '09 в 21:30
5
ответов

static vs extern "C" / "С++"

В чем разница между статической функцией-членом и внешней связью "C"? Например, при использовании "makecontext" в С++ мне нужно передать указатель на функцию. Google рекомендует использовать внешнюю ссылку "C" для него, потому что "makecontext"...
задан 26 февр. '09 в 22: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 в 16:56
4
ответов

Могут ли функции С++ помечены как Extern "C" throw?

У меня есть функции С++, которые я хочу объявить, используя extern "C", хотя они только вызывается в коде на С++. Да, я знаю, это странно, но это то, что я хотел бы сделать для согласованности, так как мы смешали объявления C и С++. Я просто хочу уб...
задан 06 апр. '13 в 3:31
9
ответов

Как работает внешняя декларация "С"?

Я беру курс языков программирования, и мы говорим о объявлении extern "C". Как это объявление работает на более глубоком уровне, кроме "он взаимодействует с C и С++"? Как это влияет на привязки, которые также имеют место в программе?
задан 08 марта '10 в 20:49
2
ответов

Когда использовать extern "C" в С++?

Возможный дубликат: Зачем нам нужен extern "C" {#include < foo.h > } в С++? Я часто видел программы, закодированные как: extern "C" bool doSomeWork() { // return true; } Почему мы используем блок extern "C"? Можем ли мы заменить ...
задан 18 авг. '09 в 9: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 в 19:02
7
ответов

Когда использовать внешние слова "С" простыми словами?

Возможно, я не понимаю различия между C и С++, но когда и зачем нам нужно использовать extern "C" { ? По-видимому, это "соглашение о связи". Я кратко прочитал об этом и заметил, что все файлы заголовков .h, входящие в состав MSVS, окружают его ко...
задан 09 мая '10 в 9:11