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

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

09.02.2012, 00:57. Показов 10260. Ответов 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
Ответ Создать тему
Новые блоги и статьи
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru