|
Совместное использование *.сpp файлов и *.c, Не компилируются совместно файлы Си и Си++ |
|
|
|
 |
Ответов
|
Jun 19 2011, 17:36
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(sergeeff @ Jun 18 2011, 17:51)  Вы хоть эту ветку читаете? Про extern "C"? А вы хоть читаете, о чём я спрашиваю? Одно дело, когда обычный си модуль не может найти си++ функцию, имя которой, по понятным причинам, видоизменено. Но когда наоборот - си++ модуль в упор не видит обычную си функцию? В этом случае ведь name mangling не работает? Ошибка уходит, когда принудительно включаю компиляцию си файлов в режиме си++.
|
|
|
|
|
Jun 20 2011, 09:13
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(dxp @ Jun 20 2011, 06:59)  Если компиляете в С++ режиме, то все функции будут кодироваться по-плюсатому. Ведь в плюсах обычное дело та же перегрузка имён функций, и как компилятор должен догадаться, какие функции у вас имеют С-связывание, а какие С++ связывание. Для этого и введена спецификация связывания extern "<Lang>", где <Lang> - отличный от С++ язык (там не обязательно должен быть С, хотя этот вариант встречается в подавляющем большинстве случаев). Спасибо. Интересно, а какие ещё есть идентификаторы <Lang>? Цитата(XVR @ Jun 20 2011, 12:42)  А откуда С++ знать, что это 'обычная С функция'? Для этого extern "C" и предназначен  Так тело-то этой функции - в обычном .c файле! Компилер что, манглит сразу имя функции по её объявлению в хидере, не заглядывая даже в определение? Вот шустрый какой!
|
|
|
|
|
Jun 20 2011, 09:21
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sonycman @ Jun 20 2011, 13:13)  Так тело-то этой функции - в обычном .c файле! А как компилятор в процессе компиляции файла А узнает о теле функции в файле Б? Он же их отдельно компилирует Цитата Компилер что, манглит сразу имя функции по её объявлению в хидере, не заглядывая даже в определение? Разумеется. Тело функции его не интересует (его вообще может не быть)
|
|
|
|
Сообщений в этой теме
kolobochishe Совместное использование *.сpp файлов и *.c Jun 9 2011, 07:22 MrYuran В хедерах си-шных модулей надо вставить скобки
Код... Jun 9 2011, 07:43 sergeeff Проще прямо написать
Код#ifdef __cplusplus
extern ... Jun 9 2011, 07:46 kolobochishe Цитата(MrYuran @ Jun 9 2011, 12:43) В хед... Jun 9 2011, 08:05 mdmitry Цитата(kolobochishe @ Jun 9 2011, 12:05) ... Jun 9 2011, 09:47  inventor Цитата(mdmitry @ Jun 9 2011, 13:47) Можно... Jun 16 2011, 18:24   sergeeff Цитата(inventor @ Jun 16 2011, 22:24) в п... Jun 17 2011, 10:24    zltigo QUOTE (sergeeff @ Jun 17 2011, 13:24) про... Jun 17 2011, 12:54     sergeeff Цитата(zltigo @ Jun 17 2011, 16:54) С и С... Jun 17 2011, 13:20      zltigo QUOTE (sergeeff @ Jun 17 2011, 16:20) Хот... Jun 17 2011, 13:33      Сергей Борщ QUOTE (sergeeff @ Jun 17 2011, 16:20) Хот... Jun 17 2011, 13:40       zltigo QUOTE (Сергей Борщ @ Jun 17 2011, 16:40) ... Jun 17 2011, 13:59       dxp Цитата(Сергей Борщ @ Jun 17 2011, 20:40) ... Jun 17 2011, 14:09      Danis Цитата(sergeeff @ Jun 17 2011, 16:20) Хот... Jun 17 2011, 13:57       dxp Цитата(sonycman @ Jun 20 2011, 04:17) Я о... Jun 20 2011, 02:59          sonycman Цитата(XVR @ Jun 20 2011, 13:21) Разумеет... Jun 20 2011, 09:34         dxp Цитата(sonycman @ Jun 20 2011, 16:13) Инт... Jun 20 2011, 12:04          zltigo QUOTE (dxp @ Jun 20 2011, 14:04) Мне попа... Jun 20 2011, 12:15           inventor Кстати, никогда не делайте программы для DSP и кон... Jun 22 2011, 10:52            dxp Цитата(inventor @ Jun 22 2011, 17:52) Кст... Jun 22 2011, 12:13             inventor Цитата(dxp @ Jun 22 2011, 16:13)
Вам сюд... Jun 22 2011, 13:59              dxp Цитата(inventor @ Jun 22 2011, 20:59) Для... Jun 22 2011, 14:48               zltigo QUOTE (dxp @ Jun 22 2011, 17:48) Заинтриг... Jun 22 2011, 17:52              XVR Цитата(inventor @ Jun 22 2011, 17:59) Для... Jun 22 2011, 19:19               inventor Цитата(XVR @ Jun 22 2011, 23:19) Угу, вид... Jun 23 2011, 11:21                MrYuran Цитата(inventor @ Jun 23 2011, 15:21) код... Jun 23 2011, 11:30                dxp Цитата(inventor @ Jun 23 2011, 18:21) код... Jun 23 2011, 12:35                 inventor Цитата(dxp @ Jun 23 2011, 16:35) Это тако... Jun 23 2011, 16:41                XVR Цитата(inventor @ Jun 23 2011, 15:21) код... Jun 23 2011, 17:54                ar__systems Цитата(inventor @ Jun 23 2011, 07:21) код... Jul 4 2011, 01:14            AHTOXA Цитата(inventor @ Jun 22 2011, 16:52) Все... Jun 22 2011, 14:48 sergeeff Уж сколько понаписано про преждевременную оптимиза... Jun 24 2011, 10:45 zltigo QUOTE (sergeeff @ Jun 24 2011, 13:45) Уж ... Jun 24 2011, 13:15  inventor Цитата(zltigo @ Jun 24 2011, 17:15) глупо... Jun 24 2011, 15:50  sergeeff Цитата(zltigo @ Jun 24 2011, 16:15) глупо... Jun 25 2011, 09:41   zltigo QUOTE (sergeeff @ Jun 25 2011, 11:41) А ч... Jun 25 2011, 09:47    sergeeff Цитата(zltigo @ Jun 25 2011, 12:47) После... Jun 25 2011, 17:38     zltigo QUOTE (sergeeff @ Jun 25 2011, 19:38) Ров... Jun 25 2011, 18:53      sergeeff Цитата(zltigo @ Jun 25 2011, 21:53) Вы оп... Jun 25 2011, 22:44       Dog Pawlowa Цитата(sergeeff @ Jun 26 2011, 01:44) Про... Jun 26 2011, 05:03       inventor Цитата(sergeeff)Сделали. И вдруг (или не вдруг) на... Jun 26 2011, 06:35       zltigo QUOTE (sergeeff @ Jun 26 2011, 00:44) Име... Jun 26 2011, 08:26        sergeeff Цитата(zltigo @ Jun 26 2011, 11:26) Забыл... Jun 26 2011, 09:37         zltigo QUOTE (sergeeff @ Jun 26 2011, 12:37) Одн... Jun 26 2011, 10:18          sergeeff Цитата(zltigo @ Jun 26 2011, 13:18) Катег... Jun 26 2011, 10:39      MrYuran Цитата(zltigo @ Jun 25 2011, 22:53) Все у... Jun 27 2011, 06:43 dxp Цитата(inventor @ Jun 24 2011, 22:50) Не ... Jun 27 2011, 06:57 MrYuran Цитата(dxp @ Jun 27 2011, 10:57) Даже есл... Jun 27 2011, 07:02  dxp Цитата(MrYuran @ Jun 27 2011, 14:02) Согл... Jun 27 2011, 10:44 zltigo QUOTE (dxp @ Jun 27 2011, 08:57) Насчёт А... Jun 27 2011, 08:20
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|