MDK下使用c++问题

[复制链接]
4925|3
 楼主| zhxi 发表于 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)); }
 楼主| zhxi 发表于 2011-1-18 20:17 | 显示全部楼层
使用mdk自带的例子:C:\Keil\ARM\Examples\C++\Example1
也是同样的错误
 楼主| zhxi 发表于 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
 楼主| zhxi 发表于 2011-1-18 20:32 | 显示全部楼层
string.h中把语句修改成“    { return const_cast<char *>(strrchr(const_cast<char *>(__s), __c)); }”后正常了
但是这样做觉得有点不妥啊。还是MDK的.h文件有bug
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

146

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部