在VS2008下写C/C++程序,代码示意如下:
int main()
{
unsinged char *ch1 = null;
ch1 = (unsinged char *)malloc(100 * sizeof(unsinged char));
func1(ch1);
return 0;
}
func1定义为void func1(const char *c1);
在编译工程选项里选择作为C++程序编译,就会出错,cannot convert parameter 1 from 'unsigned char *' to 'const char *'
选择作为C语言程序编译就没错,这能表示C++中形参为const实参必须也得是const吗?有这个要求吗?
改为func1((const char *)ch1)就可以了
那么如果在C++下使用C语言的库,比如strcmp,这个函数的定义中字符串都是const char *,作为C++程序编译时还会对这个const进行限制吗?好像不会吧
参考资料:原创
本回答被提问者采纳