Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/48: Рейтинг темы: голосов - 48, средняя оценка - 4.81
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926

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

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

Студворк — интернет-сервис помощи студентам
Есть программа на C++, и в ней кое-какие нужные функции, которые хотелось бы использовать в программе на C. Переписывать заново функции с С++ на С не хочется, какие есть альтернативные пути решения?
С точки зрения дизайна кода звучит это довольно дико, обычно всё наоборот. Может, есть какие-то флаги для линкера, чтобы он мог слинковать две единицы трансляции как надо?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2012, 00:57
Ответы с готовыми решениями:

Замена Visual Studio 2015: подскажите, какие есть варианты
В общем, нужно скомпилировать проект который написан под VS2015. Скомпилить нужно в винде (32 и 64битный бинарник что б были) ...

Использование кода символа внутри строки?
Как должна выглядеть стока, содержащая символ с определённым кодом? Можно как то вместо...

Подскажите какие платные есть варианты для встроенного редактора кода?
Необходимо в свое приложение включить редактор кода. Нашел пока два варианта: http://www.qwhale.net/products/editor.htm ...

40
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
10.02.2012, 11:34
Студворк — интернет-сервис помощи студентам
Чё-то мне подсказывает что это синтаксически неверный код.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.02.2012, 11:57
kravam, для С++ - да. Для С - нисколько.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
10.02.2012, 12:09
Сдаётся мне, что это синтаксически неверный код как для С, так и для С++; по умолчанию предполагается разговор о синтаксически верных кодах, не?

Добавлено через 2 минуты
Evg, не раз замечено уже: ты задание дашь, а чё к чему не объяснишь. Только гадать остаётся.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.02.2012, 12:21
kravam, и что же тут синтаксически неверного для С?
http://liveworkspace.org/code/... f829973660
http://liveworkspace.org/code/... f6b6c5ecb6

Цитата Сообщение от kravam Посмотреть сообщение
Только гадать остаётся
Я вот почему-то сразу понял, к чему этот код был дан. В том посте даже комментарий на ваш пост был. И как тут не догадаться?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
10.02.2012, 12:33

А кто разрешал добавить 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++, то разговор не сдвинулася с мёртвой точки, ибо я не вижу кода на языке С, компилящегося как код на языке С!
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.02.2012, 12:34
kravam, слив засчитан.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
10.02.2012, 12:35
Слив-то сливом, а код ваш не компилится не так, не эдак!
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.02.2012, 12:43
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:~/Рабочий стол$
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
10.02.2012, 12:55
ВЫ можете чисто и честно нормальным русским языком объяснить, чё вы хотите показать? Я в очередной раз вижу, что код этот не компилится. По-моему, это подтверждает мои слова, что этот код не компилится. Как специально путаете.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.02.2012, 12:59
kravam, и где же он не компилируется?
Строка 13: компиляция С-компилятором gcc. Ни одной ошибки (с ключом pedantic).
Строка 14: запуск также проходит успешно.
Делаем вывод: код успешно компилируется С-компилятором.
Строка 15: компиляция С++-компилятором g++. Ошибки.
Делаем вывод: код не компилируется С++-компилятором.
Делаем общий вывод: код, который может быть скомпилирован С-компилятором, не всегда может быть скомпилирован С++-компилятором.
Таким образом ваше высказывание опровергнуто.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
10.02.2012, 13:12
silent_1991, а при компиляции g++ расширение менять на cpp не пробовали? попробуйте
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
10.02.2012, 13:16
kravam, Вы издеваетесь? На кой чёрт менять расширение на cpp, если я уже скомпилировал код С-компилятором. Т.е. уже опроверг ваше "код не компилится ни так, ни так".
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
10.02.2012, 13:31
А, да, прошу прощения, я всегда думал, что C++ более "развязен" чем C
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
10.02.2012, 13:43
мне больше нравится такой пример

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;
}
успешной сборки на с++
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.02.2012, 13:09
Цитата Сообщение от kravam Посмотреть сообщение
Evg, не раз замечено уже: ты задание дашь, а чё к чему не объяснишь. Только гадать остаётся
В своё время Платон сделал одно интересное наблюдение. Человеку можно до потери пульса объяснять, но всё равно не объяснить, потому что человек уверен в своей собственной правоте и не хочет слушать ничего другого. То бишь "чукча не читатель, чукча писатель". Но при этом человеку можно задать вопрос, ответив на который со своей точки зрения, он получит заведомо противоречивый ответ. Таким образом человеку можно по крайней мере показать, что он не прав в своих идеях.

В твоём случая я давно наблюл, что ты ничерта не читаешь, что тебе пишут. А потому самый простой способ довести до тебя, что ты неправ - это задать тебе вопрос, ответив на который ты увидишь, что твои соображения были неправильными. Чтобы уяснить истину, тебе нужно либо немного пораскинуть мозгами, либо тупо ещё раз перечитать всю тему, потому что ответ на поставленный вопрос уже не раз был озвучен.
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.02.2012, 13:40
Цитата Сообщение от Evg Посмотреть сообщение
В твоём случая я давно наблюл, что ты ничерта не читаешь, что тебе пишут
Обоснуй. А я хоть щас могу обосновать своё утверждение.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
12.02.2012, 14:00
Цитата Сообщение от kravam Посмотреть сообщение
Обоснуй. А я хоть щас могу обосновать своё утверждение.
эта тема и десяток другиъ
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.02.2012, 14:08
Несерьёзно.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.02.2012, 22:16
Цитата Сообщение от kravam Посмотреть сообщение
Обоснуй. А я хоть щас могу обосновать своё утверждение.
Цитата Сообщение от kravam Посмотреть сообщение
Несерьёзно.
Я не вижу смысла что-то обосновывать человеку, который спорит с очевидными вещами. Ты меня спросил, почему я тебе задаю вопросы, я ответил. Принимаешь ты мой ответ или нет - дело твоё. Так же не понимаю, что ты собрался обосновать
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.02.2012, 23:14
Не отвечать за свои слова это не по-пацански
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2012, 23:14

Какие есть способы вычисления регистра EIP внутри программы?
Подскажите пожалуйста какие есть способы вычисления регистра EIP внутри программы, кроме такого: call $+5 pop eax

скажите какие есть программы для построения блок схем из кода???
скажите какие есть программы для построения блок схем из кода???

Посоветуйте, какие есть варианты
Нужно организовать автоматический обмен данными справочника &quot;Сотрудники&quot; между Бухгалтерией и ЗУП. Обе нетиповые, неуправляемые. По...

Какие варианты кода не вызовут ошибку компиляции?
Какие варианты кода не вызовут ошибку компиляции? Вариант 1 class Parent {} interface...

Какие есть варианты в Environment.Exit()?
Возможно глупый вопрос, но какие есть коды в Environment.Exit(код)? Что они делают? Пример я знаю только один: Environment.Exit(0); ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru