2015.10.19 关于extern关键字

今天听国嵌的C语言课时,老师提到了extern关键字,这里我自己总结一下:

extern关键字有两层意思:

1、用于声明外部定义的变量和函数

这种是最常见的使用方法,我简单介绍一下:

例如在tst2.c文件中有以下变量和函数:

int a,b;

int add(int x, int y)
{
return x+y;
}

这个时候我有一个tst1.c文件,在这个文件中我需要用到tst2.c文件中的声明的变量和函数,这个时候在tst1文件中我们就要对要使用的变量利用extern关键字来进行声明:

#include <stdio.h>

extern int a,b;

extern int add(int x ,int y);

void main()
{

 a=2;
 b=3;
 printf("%d",add(a,b));
 getchar();
}

以上的extern关键字使用方法是最常见的,也是用的最多的。

2、用于告诉编译器用C方式编译:

C++编译器和一些变种C编译器默认会按自己的方式去编译函数和变量,用extern关键字可以命令编译器“以标准C方式编译”

eg:

extern "C"

{

int fun(int a,int b)

{

return a+b;

}

}

以上就是告诉编译器,函数fun以标准的C方式进行编译。

但是假如当前编译环境是标准C例如gcc,这个时候不能这样用的。

时间: 2024-10-19 15:22:16

2015.10.19 关于extern关键字的相关文章

2015.10.19 福州大学第九届程序设计竞赛

FZU 2086 餐厅点餐 枚举 练的时候以为是dp---(事实上这场只做了10来分钟---就愉快地滚去吃饭了---) 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 int A,B,C,D,E; 7 int a[15];//汤 8 int b[15];//饭 9 int c[15];//面 1

2015/10/19总结:ajax传参、jquery.validate自定义日期校验

以下内容仅来自于日常实践零碎回顾.总结,不保证正确性,欢迎路过的大神指点指点! 1.这几天一直在写jsp前端页面,了解到前端与后端数据交互数据有两种.一种是form 的submit方式提交,这种方法可以在表单里通过声明属性:method = 'post'声明表单提交的方式(要与后台的controller的RequestMethod属性对应),  action = ‘ url’声明表单提交后跳转的页面(好像采用这种方式一般都要跳转页面).另一种方式就是通过ajax提交,ajax提交和响应的数据方式

2015.10.19信息系统项目管理师作业

1.需求开发过程的四个主要活动,及其内容简述:(获分定验) 答: 1>需求获取:积极的和用户交流,获取用户需求并分析和修正,最后形成符合解决问题的用户需求,生产<用户需求说明书>;2>需求分析:对各种需求进行分析并抽象描述,建立一个可以指导系统的概念模型;3>需求定义:根结需求获取和需求分析的结果,定义准确的产品需求,生产<需求规格说明书>;4>需求验证:开发方和用户共同对需求文档评审,达成共识后作出书面承诺,是需求文档具有商业合同的效果; 2.结合图17.

学习小记(2015/10/19)——工作中遇见的一个关于jQuery选择器的小要点。

jQuery是现在非常流行的js库,其中封装了很多很酷炫的功能,其中强大的选择器功能是必不可少的.由于jQuery的选择器,我们能够快速的从许多元素中选中我们需要的目标,从而进行后续的工作.今天,我就讲一下jQuery的我使用jQuery遇见的一个小要点. 当时,我使用jQuery是准备将所有页面上的多选框选中,再对其中某一个进行操作.我是这样做的:HTML: <!DOCTYPE html> <html> <head lang="en"> <m

我关注的一周技术动态 2015.10.25

分布式系统实践 1. ScyllaDB:用 C++ 重写后的 Cassandra ,性能提高了十倍 http://blog.jobbole.com/93027/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 要点: 一直非常不喜欢hadoop系列对JVM的重度依赖, 可能是我不熟悉java的原因吧, 总感觉JVM背着我们做了很多不可见的工作, 心里不踏实. ScyllaDB宣称比Cassandra性能提高十倍, 肯定

【黑马程序员】————static和extern关键字2-对变量的作用

C语言和Java都有全局变量的概念,但是它们的用法还是有些差别的. 一.在Java中,全局变量的定义没有严格的位置规定 全局变量可以定义在类的最前面,也可以定义在类的最尾端,也就说一个方法可以访问在它之后定义的变量. 可以看到,第4行定义的test方法可以访问第8行定义的变量a,这是完全没有问题的. 二.在C语言中,全局变量定义的位置是有限制的 默认情况下,一个函数不可以访问在它后面定义的全局变量 在第4行定义的main函数中尝试访问第9行定义的变量a,编译器直接报错了. 解决这个错误的话,有2

19-C语言static和extern关键字2-对变量的作用

一.在Java中,全局变量的定义没有严格的位置规定 全局变量可以定义在类的最前面,也可以定义在类的最尾端,也就说一个方法可以访问在它之后定义的变量. 可以看到,第4行定义的test方法可以访问第8行定义的变量a,这是完全没有问题的. 二.在C语言中,全局变量定义的位置是有限制的 默认情况下,一个函数不可以访问在它后面定义的全局变量 在第4行定义的main函数中尝试访问第9行定义的变量a,编译器直接报错了. 解决这个错误的话,有2种办法: 第1种办法:将变量a定义在main函数的前面 这样做编译器

16-static和extern关键字2-对变量的作用

上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问:extern用来定义和声明一个外部函数,允许其他文件访问.static和extern对变量也有作用,不过跟函数有点差别. C语言和Java都有全局变量的概念,但是它们的用法还是有些差别的. 一.在Java中,全局变量的定义没有严格的位置规定 全局变量可以定义在类的最前面,也可以定义在类的最尾端,也就说一个方法可以访问在它之后定义的变量. 可以看到,第4行定义的test方法可以访问第8行定义的

C语言中的 extern 关键字

今天在 BLE 中看到很多 extern 关键字,现在总结一下: extern 关键字主要用于在一个c文件中要用到另一个c文件中的变量或者函数. example: 1 #extern_base.c 2 3 int a = 100; 1 #extern.h 2 3 extern int a; 1 #extern.c 2 3 #include <stdio.h> 4 #include "extern.h" 5 6 int main() 7 { 8 printf("%d