Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C++ в IAR MSP430
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
juvf
Есть проект для msp430f149 написанный на СИ. Пишу новый модуль (файл с функциями) для этого проекта. Ну очень нужен на с++. Для нового файла установил опцию Embedded C++. При компиляции получаю ошибки
Код
Error[Pe040]: expected an identifier C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 128
Error[Pe018]: expected a ")" C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 128
Error[Pa002]: the type attribute "__intrinsic" is not allowed on this declaration C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 128
Error[Pe040]: expected an identifier C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 130
Error[Pe018]: expected a ")" C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 130
Error[Pa002]: the type attribute "__intrinsic" is not allowed on this declaration C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 130

...


вот кусок кода из math.h
Код
#ifdef __cplusplus
  __INTRINSIC double abs(double);             //строка 128
  __INTRINSIC double pow(double, int);
  __INTRINSIC float abs(float);                   //строка 130
....
  __INTRINSIC long double tanh(long double);
#endif /* __cplusplus */


т.е. asb() несколько раз объявлена и на неё ругается. Как это побороть можно?
dxp
Цитата(juvf @ Apr 6 2010, 10:26) *
вот кусок кода из math.h
Код
#ifdef __cplusplus
  __INTRINSIC double abs(double);             //строка 128
  __INTRINSIC double pow(double, int);
  __INTRINSIC float abs(float);                   //строка 130
....
  __INTRINSIC long double tanh(long double);
#endif /* __cplusplus */


т.е. asb() несколько раз объявлена и на неё ругается. Как это побороть можно?

Вы серьезно думаете, что ошибка в IAR'овских либах? smile.gif Ошибка где-то в вашем коде. Покажите его (удалите все лишнее, оставьте только фрагмент, который приводит к ошибке)?

Что касается нескольких функций с именем abs, то следует вспомнить о такой фиче С++, как перегрузка имен функций.
akostin
Используйте приведение типов при вызове функции abs().
juvf
Ну проблему решил, и почему она возникла в таком виде - примерно понял. А проблему решил строчкой в срр файле #include <math.h>.
в cpp есть #include "main.h". а main - это уже сишный. в main.h есть #include <math.h> который, по видимому компилялся как сишный. а в си нет перегрузки функций.


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