您的位置:首页 > 其它

固有的不可移植的特征

2016-08-24 11:05 176 查看
        编写可以容易从一个机器迁移到其它机器的低级程序是C程序设计语言的一个特点。将程序迁移到新机器的过程称为移植,故C程序是可移植的。为了支持低级编程,C语言定义了一些固有不可移植的特征,C++继承的其中一个是:链接指示linkage directive)。

        C++程序有时需要调用其它程序设计语言编写的函数,最常见的是C语言。其它语言编写的函数的名字必须声明,且必须指定返回类型和参数表。编译器按处理普通C++函数一样的方式检查对外部语言函数的调用,但一般产生不同的代码来调用这些函数。下面为头文件cstdlib中声明的一些C函数:

extern "C" size_t strlen(const char*);

extern "C"{
int strcmp(const char*, const char*);
char* strcat(char*, const char*)
}
        链接指示有两种形式:单个的或复合的。通过将几个函数的声明放在链接指示之后的花括号内部,可以给它们设定相同的链接。将#include指令放在复合链接指示的花括号中时,假定头文件中声明的所有普通函数都是用链接指示的语言编写的。链接指示可以嵌套,故上述头文件包含带链接指示的函数的链接不受影响。链接指示不能出现在类定义或函数定义的内部,它必须出现在函数的第一次声明上。

        通过对函数定义使用链接指示,其它语言编写的程序可以使用C++函数。当编译器为该函数产生代码时,它将产生适用于指定语言的代码。链接指示支持的语言随编译器而异,如“Ada”、“FORTRAN”等。

Hunger:explicit-keyword enforces only explicit casts to be valid.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: