Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: extern C  (Прочитано 13982 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 07-04-2004 02:10 » 

У меня возникла проблемма , если в кратце :
- Есть header файл где объявлены функции
- Есть lib файл где определяется как их связывать

если компилирую свой файл как С то все впорядке
если как С++ то компилятор читает .h и генерит имена функций в стиле с++ , которые линкер естественно не может разрешить потому-что в lib они( имена функций ) прописаны как С.

как принудить компилятор обрабатывающий *.c/cpp файл как с++ генерировать имена внешних функций из *.h файла в стиле с , естественно без изменения прототипов функций - ато их слишком много Не понял
Записан

1n c0de we trust
Доброжелатель
Гость
« Ответ #1 : 07-04-2004 05:01 » 

Цитата: Mayor
как принудить компилятор обрабатывающий *.c/cpp файл как с++ генерировать имена внешних функций из *.h файла в стиле с , естественно без изменения прототипов функций - ато их слишком много Не понял

Ааа...  лень матушка заела? Жжешь Берём и переписываем хидер ручками, или пишем конвертор, который выполнит всю черновую работу, делов то  Ага

Ну а кто читает Страуструпа 8),  напишут так:
Код:
// file2.h
extern "C" |
  #include<file1.h> // исходный h-файл
"


и во всех местах, где использовался file1.h нужно использовать file2.h
Записан
ysv_
Помогающий

ua
Offline Offline

« Ответ #2 : 07-04-2004 13:43 » 

Цитата

Ну а кто читает Страуструпа , напишут так:
Код:
// file2.h
extern "C" {
  #include<file1.h> // исходный h-файл
}


и во всех местах, где использовался file1.h нужно использовать file2.h


Есть вариант попроще. В .h файле определения функций берем в следующие ifdef-ы:
#ifdef __cplusplus
extern "C" {
#endif
// Здесь идут определения функций
#ifdef __cplusplus
}
#endif
Записан
Mayor
Специалист

ru
Offline Offline

« Ответ #3 : 19-04-2004 01:22 » 

Улыбаюсь) спасибо !!!!

и вообще это не лень , а множество объявленных функций

а откуда этого  Страуструпа скачать ? Рекомендуете почитать ?
Записан

1n c0de we trust
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #4 : 19-04-2004 05:35 » 

Mayor, Страуструпа-то? Очень рекомендую!
Да еще если ты на С++ работаешь, рекомендую его на рабочем столе иметь. Оч-чень своевременная книга!
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
Mayor
Специалист

ru
Offline Offline

« Ответ #5 : 20-04-2004 02:15 » 

Ссылку можно  ?
Или его дешевле купить чем распечатывать ?
Записан

1n c0de we trust
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines