Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проект в Иаре с файлами ".с" и ".сpp"
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Twen
Добрый день. Я работаю в Иаре и захотел создать проект, в котом были бы файлы на с и на cpp...но я столкнулся с проблемой...
У файле cpp объявляю сам класс и также функцию, работы с ней, у .h файле объявляю функцию работы с классом для доступа к ней от других фалов. Когда у файле main.c не делаю вызова функции ReadSalary(); тогда все работает, как только вызываю , пишет Error Li005 no definition for "long ReadSalary(void) ".

Сам код смысла не имеет, приведен для примера.


Пример, файл .cpp:

class employee
{
public:
float change_salary(float)
{
return salary;
};
long get_id(void)
{
return employee_id;
};
private:
char name [64] ;
long employee_id;
float salary;
};

employee worker;


long ReadSalary(void)
{
return worker.employee_id();
}

Файл .h
long ReadSalary(void)
{
return worker.employee_id();
}


Теперь файл main.c
main
{
long id;
id = ReadSalary();
}

Когда у настройках файла .cpp ставлю компилить С++, а файл main, компилить C, то вылазит ошибка ...

Хотел у файле .h записать , но вылезла ошибка типа не понимает синтаксиса extern "C" , может что-то нужно подключить ?

extern "C" {
long ReadSalary(void)
{
return worker.employee_id();
}
}
demitar
Попробуйте в h-файле объявить прототип вашей функции так:

CODE
#ifdef __cplusplus
extern "C" {
#endif

long ReadSalary(void);

#ifdef __cplusplus
}
#endif

Twen
Цитата
#ifdef __cplusplus
extern "C" {
#endif

long ReadSalary(void);

#ifdef __cplusplus
}
#endif


Спасибо, все работает!
А вообще при написании проекта на с и с++ компилятор с ума не сходит?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.