Jump to content

    
Sign in to follow this  
juvf

C++ в IAR MSP430

Recommended Posts

Есть проект для 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() несколько раз объявлена и на неё ругается. Как это побороть можно?

Share this post


Link to post
Share on other sites
вот кусок кода из 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'овских либах? :) Ошибка где-то в вашем коде. Покажите его (удалите все лишнее, оставьте только фрагмент, который приводит к ошибке)?

 

Что касается нескольких функций с именем abs, то следует вспомнить о такой фиче С++, как перегрузка имен функций.

Share this post


Link to post
Share on other sites

Ну проблему решил, и почему она возникла в таком виде - примерно понял. А проблему решил строчкой в срр файле #include <math.h>.

в cpp есть #include "main.h". а main - это уже сишный. в main.h есть #include <math.h> который, по видимому компилялся как сишный. а в си нет перегрузки функций.

 

 

но с++ так и не прикрутил, есть еще проблема - но это уже другая тема.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this