Hallo!
Ich versuche gerade einige C++ Quellen mit dem IAR (V3.41A) zu
übersetzen.
Der Großteil der Quellen sind jedoch reine C-files.
Ich habe in den Optionen die automatische Auswahl des Compiler-Sprache
(C oder C++) anhand der Endung eingestellt. Weiterhin verwende ich die
DLIB, weil nur diese C++ unterstützt.
Jetzt bekomme ich folgende Fehlermeldungen:
1 | Error[Pe338]: more than one instance of overloaded function "memchr" has "C" linkage C:\Programme\IAR Systems\Embedded Workbench 4.0\430\INC\DLIB\string.h 58
|
2 | Error[Pe338]: more than one instance of overloaded function "strchr" has "C" linkage C:\Programme\IAR Systems\Embedded Workbench 4.0\430\INC\DLIB\string.h 59
|
3 | Error[Pe338]: more than one instance of overloaded function "strpbrk" has "C" linkage C:\Programme\IAR Systems\Embedded Workbench 4.0\430\INC\DLIB\string.h 60
|
4 | Error[Pe338]: more than one instance of overloaded function "strrchr" has "C" linkage C:\Programme\IAR Systems\Embedded Workbench 4.0\430\INC\DLIB\string.h 61
|
5 | Error[Pe338]: more than one instance of overloaded function "strstr" has "C" linkage C:\Programme\IAR Systems\Embedded Workbench 4.0\430\INC\DLIB\string.h 62
|
6 | Error[Pe338]: more than one instance of overloaded function "abs" has "C" linkage C:\Programme\IAR Systems\Embedded Workbench 4.0\430\INC\DLIB\stdlib.h 294
|
7 | Error[Pe338]: more than one instance of overloaded function "div" has "C" linkage C:\Programme\IAR Systems\Embedded Workbench 4.0\430\INC\DLIB\stdlib.h 300
|
Damit kann ich nicht viel anfangen. Die entsprechenden Zeilen in den
h-files:
1 | /* IAR, we can't use the stratagem that Dinkum uses for memchr,... */
|
2 | #ifdef __cplusplus
|
3 | __INTRINSIC const void *memchr(const void *_S, int _C, size_t _N);
|
4 | __INTRINSIC const char *strchr(const char *_S, int _C);
|
5 | __INTRINSIC const char *strpbrk(const char *_S, const char *_P);
|
6 | __INTRINSIC const char *strrchr(const char *_S, int _C);
|
7 | __INTRINSIC const char *strstr(const char *_S, const char *_P);
|
8 | __INTRINSIC void *memchr(void *_S, int _C, size_t _N);
|
9 | __INTRINSIC char *strchr(char *_S, int _C);
|
10 | __INTRINSIC char *strpbrk(char *_S, const char *_P);
|
11 | __INTRINSIC char *strrchr(char *_S, int _C);
|
12 | __INTRINSIC char *strstr(char *_S, const char *_P);
|
13 | #else /* !__cplusplus */
|
14 | __INTRINSIC void *memchr(const void *_S, int _C, size_t _N);
|
15 | __INTRINSIC char *strchr(const char *_S, int _C);
|
16 | __INTRINSIC char *strpbrk(const char *_S, const char *_P);
|
17 | __INTRINSIC char *strrchr(const char *_S, int _C);
|
18 | __INTRINSIC char *strstr(const char *_S, const char *_P);
|
19 | #endif /* __cplusplus */
|
Weiß da jemand Rat?
MfG
Andreas