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

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

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

Добрый день.
Подскажите пожалуйста можно ли водном проекте использовать C и C++? И если да то нужно ли что-то указывать.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2010, 13:16
Ответы с готовыми решениями:

много файлов на ассемблере в одном проекте
ЗдороФ всем! Пытаюсь создать многофайловый проект в AVR Studyo на ассемблере (чтоб можно было свои...

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

Много файлов в одном проекте
Хочу изучить к примеру некую программу... Скачиваю проект, а там в папке куча других папок и...

Несколько задач в одном проекте
Вопрос такой. Даны несколько очень лекгих задач . Решил легко. Хотел бы спросить, можно ли их...

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

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

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

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

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

Компилятор автоматически определяет язык по расширению файлов.
0
18.12.2010, 17:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2010, 17:12

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

CMake и QMake в одном проекте
Здравствуйте, имеется проект под QT со стандартными правилами сборки QMake есть автономная...

Сервер и клиент в одном проекте
Как в VS C# запустить в одном проекте и клиент и сервер? Когда писал на java, там проблем не было....


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

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

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