分辨C和C++的标准原型

ZDNet软件频道 时间:2004-02-05 作者:ZDNet China |  我要评论()
本文关键词:cpptips
尽管标准的C通常在C和C++中的功能相同,但是一些函数在每个语言中有不同的符号差。这些差异可以被忽略,但是在在移植C代码到C++编译器时候非常重要。
本文译自Builder.com,未经许可请勿转载 尽管标准的C通常在C和C++中的功能相同,但是一些函数在每个语言中有不同的符号差。标准的函数他们的符号差不同的是:strchr(), strpbrk(), strrchr(), strstr(), 和 memchr(),字符副本也和它们一样:wcschr(), wcspbrk(), wcsrchr(), wcsstr(), wmemchr()。它们中所有的标准头文件〈cstring〉和〈string.h〉都被定义。这些差异可以被忽略,但是在在移植C代码到C++编译器时候非常重要。

下面我们来看看strstr(),在C中,这个函数是下面的原型:

 

char *  strstr(const char*s1, const char *s2);

在C++中,这个函数有两个不同的原型,它们中的任何一个在C中的版本都不一样。

char * strstr(char *s1, const char * s2);
const char * strstr(const char * s1, const char *s2);

下面让我们在看另外一个例子:strpbrk()。在C中,它的形式是这个样子:

char * strpbrk(const char *s1, const char *s2);

在C++中,它有两个不同的符号差:

char *  strpbrk(char *s1, const char *s2);
const char * strpbrk(const char *s1, const char *s2);

现在你看到了一个模式了吧?当这些函数其中一个的C版本作为一个参数获得“const X”并返回"X *"的时候,C++定义的两个版本:一个获得"X *"并返回"X *"另外一个获得“const X”并返回"X *"。C++的用户使用重载来提高类型的安全性。


本文作者:Danny Kaley 是一个有着14年丰富经验的系统分析师和软件工程师。他擅长C++和面向对象的程序设计。




责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134