Перейти к содержанию
    

C++ в IAR MSP430

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот кусок кода из 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, то следует вспомнить о такой фиче С++, как перегрузка имен функций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...