Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 233
1

C и C++ в одном проекте одновременно

18.12.2010, 13:16. Просмотров 4127. Ответов 4
Метки нет (Все метки)

Добрый день.
Подскажите пожалуйста можно ли водном проекте использовать C и C++? И если да то нужно ли что-то указывать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2010, 13:16
Ответы с готовыми решениями:

Работа с несколькими формами одновременно в одном проекте
Т.к. уже запуталась в своих программках, решила объединить их в одном проекте. Создала несколько...

Работа go и c++ на одном проекте
Расскажите, каким образом могут использоваться c++ и golang в рамках одного проекта. Как часто...

2 Unit-а в одном проекте
Столкнулся с небольшой проблемой, пишу первую курсовую и задача такова: Написать программу, к...

C CPP в одном проекте
Под Вин сумел скрестить ежа и ужа, под юникс не получается пока. Вопросов очень много, из-за...

4
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 405
18.12.2010, 14:26 2
Можно. Без особых проблем.

в файлах .cpp
exterm "C" {
#include "Some_C_Header.h" //какой-то заголовок на Си
}

Или объявляем прототип си-шной функции как:
extern "C" void SomeFunc(int arg);

Если нужно из си-шного кода вызывать С++ функцию, то ее тоже надо объявлять с extern "C" калификотором.
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 233
18.12.2010, 14:38 3
Цитата Сообщение от miyvir
Если нужно из си-шного кода вызывать С++ функцию, то ее тоже надо объявлять с extern "C" калификотором.
С квалификатором С или С++?.

Еще компилятор ругается на стандарт который у меня указан в настройках проекта, ему не нравится что стоит gnu99
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 233
18.12.2010, 14:40 4
и еще при добавлении хотя бы одного файла cpp в проект AvrStudyo, Компилятор все пытается прокомпилировать как с++. и соответственно ничего не получается.
0
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 405
18.12.2010, 17:12 5
В языках С и С++ используются разные механизмы формирования полного имени функций (тех которыми оперирует линкер).
В Си к имени функции добавляется суммарный размер принимаемых аргументов в байтах для проверки, что вызывающая функция передала нужное число байт в качестве аргументов.
В С++ в имени функции кодируется вся информация о передаваемых аргументах, о пренадлежности функции к классам и пространствам имен.

Это значит, чтобы линкер смог правильно сопоставить имена функций, все функции используемые в разных языках должны быть с квалификатором extern "C".

gnu99 - стандарт языка Си, для С++ эта опция неприменима. Ее нужно указывать только для файлов *.с

Компилятор автоматически определяет язык по расширению файлов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2010, 17:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Несколько форм в одном проекте
мне нужно создать две формы причем вторая вызывается по нажатию кнопки и еще там нужно передать...

HttpS и http в одном проекте
Добрый день, подскажите пожалуйста, такое вообще возможно? Имеет ли смысл подобное вообще гуглить...

несколько языков в одном проекте
В Asp.Net это, как известно, возможно) Нужно, чтобы часть проекта была на C#, часть на Vb.net....

Две формы в одном проекте
Добрый день! Имеется проект Windows Forms. На скриншоте код основной формы файла MyForm.cpp,а у...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.