没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
2页
extern关键字的作用 1、extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。extern声明不是定义,即不分配存储空间。也就是说,在一个文件中定义了变量和函数, 在其他文件中要使用它们, 可以有两种方式:使用头文件,然后声明它们,然后其他文件去包含头文件;在其他文件中直接extern。 2、extern C作用 链接指示符extern C 如果程序员希望调用其他程序设计语言尤其是C 写的函数,那么调用函数时必须告诉编译器使用不同的要求,例如当这样的函数被调用时函数名或参数排列的顺序可能不同,无论是C++函数调用它还是用其他语言写的函数调用它,程序员用链接指示符告诉编译器该函数是用其他的程序设计语言编写的,链接指示符有两种形式既可以是单一语句形式也可以是复合语句形式。
资源推荐
资源详情
资源评论
1、extern 用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处
引用”。extern 声明不是定义,即不分配存储空间。也就是说,在一个文件中定义了变量和
函数, 在其他文件中要使用它们, 可以有两种方式:使用头文件,然后声明它们,然后其
他文件去包含头文件;在其他文件中直接 extern。
2、extern C 作用
链接指示符 extern C
如果程序员希望调用其他程序设计语言尤其是 C 写的函数,那么调用函数时必须告诉编译器
使用不同的要求,例如当这样的函数被调用时函数名或参数排列的顺序可能不同,无论是
C++函数调用它还是用其他语言写的函数调用它,程序员用链接指示符告诉编译器该函数是
用其他的程序设计语言编写的,链接指示符有两种形式既可以是单一语句形式也可以是复合
语句形式。
// 单一语句形式的链接指示符
extern "C" void exit(int);
// 复合语句形式的链接指示符
extern "C" {
int printf( const char* ... );
int scanf( const char* ... );
}
// 复合语句形式的链接指示符
extern "C" {
#include <cmath>
}
链接指示符的第一种形式由关键字 extern 后跟一个字符串常量以及一个普通的函数,声明
构成虽然函数是用另外一种语言编写的但调用它仍然需要类型检查例如编译器会检查传递
给函数 exit()的实参的类型是否是 int 或者能够隐式地转换成 int 型,多个函数声明可以用花
括号包含在链接指示符复合语句中,这是链接指示符的第二种形式花扩号被用作分割符表示
链接指示符应用在哪些声明上在其他意义上该花括号被忽略,所以在花括号中声明的函数名
对外是可见的就好像函数是在复合语句外声明的一样,例如在前面的例子中复合语句 extern
"C"表示函数 printf()和 scanf()是在 C 语言中写的,函数因此这个声明的意义就如同 printf()和
scanf()是在 extern "C"复合语句外面声明的一样,当复合语句链接指示符的括号中含有
#include 时,在头文件中的函数声明都被假定是用链接指示符的程序设计语言所写的,在前
面的例子中在头文件<cmath>中声明的函数都是 C 函数链接指示符不能出现在函数体中下列
代码段将会导致编译错误。
int main()
{
// 错误: 链接指示符不能出现在函数内
extern "C" double sqrt( double );
305 第七章函数
double getValue(); //ok
double result = sqrt ( getValue() );
//...
return 0;
}
如果把链接指示符移到函数体外程序编译将无错误
CodingLife99
- 粉丝: 1107
- 资源: 451
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页