固有的不可移植的特征

        编写可以容易从一个机器迁移到其它机器的低级程序是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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值