реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> C++ в mdk-arm
paskal
сообщение Jun 4 2014, 15:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769



Делаю первые шаги в Keil.
В начале просто пустой файл на С.
Создаю новый проект, соглашаюсь включит стартап файл.
Создаю файл main.c такого содержания:
Код
void SystemInit(void)
{
}
int main()
{
  return 0;
}

Копмилирую - все ОК, 0 ошибок, 0 предупреждений.
Потом в проекте правой кнопкой мыши на main.c вызываю меню Options for file 'main.c'
там меняю File type на C++ source file (а был просто С)
После этого перестает компилировать. Ошибка - ссылка на неописанную функцию SystemInit из ассемблерного файла.
Если в асме ее заремить, то компилируется, но это же не выход.
Как же работать на СРР в кейле?
Go to the top of the page
 
+Quote Post
smalcom
сообщение Jun 4 2014, 16:25
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



>> там меняю File type на C++ source file (а был просто С)
и зачем так делать?

Надо запомнить себе и чтобы остальные не забывали)))
Если С++ компилятор внезапно чего-то не находит, то значит гле-то пропущен extern "C". хи-хи
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 4 2014, 18:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Но, все-таки, лучше использовать такую конструкцию для универсальности хидера:
Код
#ifdef __cplusplus
extern "C" {
#endif

// Здесь исходный C-хидер с объявлениями extern


#ifdef __cplusplus
}
#endif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 5 2014, 04:20
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(toweroff @ Jun 5 2014, 01:26) *
для универсальности хидера:
В данном случае речь шла об определении функции в файле исходного кода, а не о ее объявлении в заголовочном. Но совет годится и для случая определения.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 18:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016