我在使用mdk编写stm32程序时,想要用c++编写,可以.cpp文件#include"string.h"后,就编译报错。
C:\Keil\ARM\RV31\INC\string.h(236): error: #167: argument of type "const char *" is incompatible with parameter of type "char *"
双击错误后指向:
{ return const_cast<char *>(strrchr(const_cast<const char *>(__s), __c)); }
使用mdk自带的例子:C:\Keil\ARM\Examples\C++\Example1
也是同样的错误
#ifdef __cplusplus
extern _ARMABI const char *strrchrstrrchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1)));
extern "C++" char *strrchrstrrchr(char * __s, int __c) __attribute__((__nonnull__(1)));
extern "C++" inline char *strrchr(char * __s, int __c)
{ return const_cast<char *>(strrchr(const_cast<const char *>(__s), __c)); }
#else
extern _ARMABI char *strrchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1)));
#endif
string.h中把语句修改成“ { return const_cast<char *>(strrchr(const_cast<char *>(__s), __c)); }”后正常了
但是这样做觉得有点不妥啊。还是MDK的.h文件有bug