本文主要是介绍固有的不可移植的特征,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编写可以容易从一个机器迁移到其它机器的低级程序是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.
这篇关于固有的不可移植的特征的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!