MDK下使用c++问题

zhenxining   2011-1-18 20:06 楼主
我在使用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)); }

回复评论 (3)

使用mdk自带的例子:C:\Keil\ARM\Examples\C++\Example1
也是同样的错误
点赞  2011-1-18 20:17
#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
点赞  2011-1-18 20:17
string.h中把语句修改成“    { return const_cast<char *>(strrchr(const_cast<char *>(__s), __c)); }”后正常了
但是这样做觉得有点不妥啊。还是MDK的.h文件有bug
点赞  2011-1-18 20:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复