Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.74
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
#1

Использование C++ кода внутри программы на C: какие есть варианты? - C++

09.02.2012, 00:57. Просмотров 4226. Ответов 40
Метки нет (Все метки)

Есть программа на C++, и в ней кое-какие нужные функции, которые хотелось бы использовать в программе на C. Переписывать заново функции с С++ на С не хочется, какие есть альтернативные пути решения?
С точки зрения дизайна кода звучит это довольно дико, обычно всё наоборот. Может, есть какие-то флаги для линкера, чтобы он мог слинковать две единицы трансляции как надо?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2012, 00:57     Использование C++ кода внутри программы на C: какие есть варианты?
Посмотрите здесь:

C++ Может есть варианты по проще??
C++ Builder Есть варианты упростить ?
C++ Какие есть способы или алгоритмы написания программы для нахождения обратной матрицы
Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе C++
Возможно ли как-то в Visual Studio 2010 проверять есть ли утечки памяти? Может есть какие-то специальные плагины для этого? C++
C++ Программы с использование функций. Наведите пожалуйста какие-то маленькие примеры
С++ Программа ,Функции , Варианты написание программы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
10.02.2012, 11:34     Использование C++ кода внутри программы на C: какие есть варианты? #21
Чё-то мне подсказывает что это синтаксически неверный код.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.02.2012, 11:57     Использование C++ кода внутри программы на C: какие есть варианты? #22
kravam, для С++ - да. Для С - нисколько.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
10.02.2012, 12:09     Использование C++ кода внутри программы на C: какие есть варианты? #23
Сдаётся мне, что это синтаксически неверный код как для С, так и для С++; по умолчанию предполагается разговор о синтаксически верных кодах, не?

Добавлено через 2 минуты
Evg, не раз замечено уже: ты задание дашь, а чё к чему не объяснишь. Только гадать остаётся.
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.02.2012, 12:21     Использование C++ кода внутри программы на C: какие есть варианты? #24
kravam, и что же тут синтаксически неверного для С?
http://liveworkspace.org/code/295b9e...28a5f829973660
http://liveworkspace.org/code/4ce4bf...736df6b6c5ecb6

Цитата Сообщение от kravam Посмотреть сообщение
Только гадать остаётся
Я вот почему-то сразу понял, к чему этот код был дан. В том посте даже комментарий на ваш пост был. И как тут не догадаться?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
10.02.2012, 12:33     Использование C++ кода внутри программы на C: какие есть варианты? #25

А кто разрешал добавить main?

+++++++++++++++++++++++++++++++++++

А вообще это не компилится не так:
C++
1
g++ main.cpp
не так:

C++
1
gcc main.c
C++
1
2
3
4
5
6
7
8
9
g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=e:/dev-cpp_nomingw/bin/../libexec/gcc/mingw32/4.6.1/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.6.1/configure --enable-languages=c,c++,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp -
-disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw
Thread model: win32
gcc version 4.6.1 (GCC)
Так что если мы говорим: вот код на языке C, и вот он компилится (не компилится) как C++, то разговор не сдвинулася с мёртвой точки, ибо я не вижу кода на языке С, компилящегося как код на языке С!
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.02.2012, 12:34     Использование C++ кода внутри программы на C: какие есть варианты? #26
kravam, слив засчитан.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
10.02.2012, 12:35     Использование C++ кода внутри программы на C: какие есть варианты? #27
Слив-то сливом, а код ваш не компилится не так, не эдак!
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.02.2012, 12:43     Использование C++ кода внутри программы на C: какие есть варианты? #28
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
silent@silent-VirtualBox:~/Рабочий стол$ cat main.c
int new(int class, int throw)
{
    return class + throw;
}
 
int main(void)
{
    new(1, 2);
     
    return 0;
}
silent@silent-VirtualBox:~/Рабочий стол$ gcc -pedantic main.c -o main
silent@silent-VirtualBox:~/Рабочий стол$ ./main
silent@silent-VirtualBox:~/Рабочий стол$ g++ -pedantic main.c -o main
main.c:1:5: error: expected unqualified-id before ‘new’
main.c: In function ‘int main()’:
main.c:8:14: error: expected type-specifier before ‘;’ token
main.c:8:14: error: no matching function for call to ‘operator new(unsigned int, int, int)’
main.c:8:14: note: candidate is:
<built-in>:0:0: note: void* operator new(unsigned int)
<built-in>:0:0: note:   candidate expects 1 argument, 3 provided
silent@silent-VirtualBox:~/Рабочий стол$
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
10.02.2012, 12:55     Использование C++ кода внутри программы на C: какие есть варианты? #29
ВЫ можете чисто и честно нормальным русским языком объяснить, чё вы хотите показать? Я в очередной раз вижу, что код этот не компилится. По-моему, это подтверждает мои слова, что этот код не компилится. Как специально путаете.
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.02.2012, 12:59     Использование C++ кода внутри программы на C: какие есть варианты? #30
kravam, и где же он не компилируется?
Строка 13: компиляция С-компилятором gcc. Ни одной ошибки (с ключом pedantic).
Строка 14: запуск также проходит успешно.
Делаем вывод: код успешно компилируется С-компилятором.
Строка 15: компиляция С++-компилятором g++. Ошибки.
Делаем вывод: код не компилируется С++-компилятором.
Делаем общий вывод: код, который может быть скомпилирован С-компилятором, не всегда может быть скомпилирован С++-компилятором.
Таким образом ваше высказывание опровергнуто.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
10.02.2012, 13:12     Использование C++ кода внутри программы на C: какие есть варианты? #31
silent_1991, а при компиляции g++ расширение менять на cpp не пробовали? попробуйте
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.02.2012, 13:16     Использование C++ кода внутри программы на C: какие есть варианты? #32
kravam, Вы издеваетесь? На кой чёрт менять расширение на cpp, если я уже скомпилировал код С-компилятором. Т.е. уже опроверг ваше "код не компилится ни так, ни так".
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
10.02.2012, 13:31     Использование C++ кода внутри программы на C: какие есть варианты? #33
А, да, прошу прощения, я всегда думал, что C++ более "развязен" чем C
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.02.2012, 13:43     Использование C++ кода внутри программы на C: какие есть варианты? #34
мне больше нравится такой пример

C
1
2
3
4
5
6
7
8
9
10
void f()
{
   printf ("hello world!");
}
 
int main()
{
   f (1, 1, 1);
   return 0;
}
или такой

C
1
2
3
4
5
6
7
typedef struct {} type;
 
int main()
{
   type* pType = malloc (sizeof(type));
   return 0;
}
успешной сборки на с++
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,769
Записей в блоге: 26
12.02.2012, 13:09     Использование C++ кода внутри программы на C: какие есть варианты? #35
Цитата Сообщение от kravam Посмотреть сообщение
Evg, не раз замечено уже: ты задание дашь, а чё к чему не объяснишь. Только гадать остаётся
В своё время Платон сделал одно интересное наблюдение. Человеку можно до потери пульса объяснять, но всё равно не объяснить, потому что человек уверен в своей собственной правоте и не хочет слушать ничего другого. То бишь "чукча не читатель, чукча писатель". Но при этом человеку можно задать вопрос, ответив на который со своей точки зрения, он получит заведомо противоречивый ответ. Таким образом человеку можно по крайней мере показать, что он не прав в своих идеях.

В твоём случая я давно наблюл, что ты ничерта не читаешь, что тебе пишут. А потому самый простой способ довести до тебя, что ты неправ - это задать тебе вопрос, ответив на который ты увидишь, что твои соображения были неправильными. Чтобы уяснить истину, тебе нужно либо немного пораскинуть мозгами, либо тупо ещё раз перечитать всю тему, потому что ответ на поставленный вопрос уже не раз был озвучен.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
12.02.2012, 13:40     Использование C++ кода внутри программы на C: какие есть варианты? #36
Цитата Сообщение от Evg Посмотреть сообщение
В твоём случая я давно наблюл, что ты ничерта не читаешь, что тебе пишут
Обоснуй. А я хоть щас могу обосновать своё утверждение.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
12.02.2012, 14:00     Использование C++ кода внутри программы на C: какие есть варианты? #37
Цитата Сообщение от kravam Посмотреть сообщение
Обоснуй. А я хоть щас могу обосновать своё утверждение.
эта тема и десяток другиъ
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
12.02.2012, 14:08     Использование C++ кода внутри программы на C: какие есть варианты? #38
Несерьёзно.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,769
Записей в блоге: 26
12.02.2012, 22:16     Использование C++ кода внутри программы на C: какие есть варианты? #39
Цитата Сообщение от kravam Посмотреть сообщение
Обоснуй. А я хоть щас могу обосновать своё утверждение.
Цитата Сообщение от kravam Посмотреть сообщение
Несерьёзно.
Я не вижу смысла что-то обосновывать человеку, который спорит с очевидными вещами. Ты меня спросил, почему я тебе задаю вопросы, я ответил. Принимаешь ты мой ответ или нет - дело твоё. Так же не понимаю, что ты собрался обосновать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 23:14     Использование C++ кода внутри программы на C: какие есть варианты?
Еще ссылки по теме:

C++ есть ли варианты?
Какие есть хитрости и трюки, уменьшающие размер кода и увеличивающие быстродействие C++
Использование кода символа внутри строки? C++
Какие действия исполняет заданная часть программы? Если есть ошибки исправить их и объяснить исправления C++
Какие варианты строительства праников наименее затратны C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
12.02.2012, 23:14     Использование C++ кода внутри программы на C: какие есть варианты? #40
Не отвечать за свои слова это не по-пацански
Yandex
Объявления
12.02.2012, 23:14     Использование C++ кода внутри программы на C: какие есть варианты?
Ответ Создать тему
Опции темы

Текущее время: 03:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru