static和extern对函数的作用】的更多相关文章

上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问:extern用来定义和声明一个外部函数,允许其他文件访问.static和extern对变量也有作用,不过跟函数有点差别. C语言和Java都有全局变量的概念,但是它们的用法还是有些差别的. 一.在Java中,全局变量的定义没有严格的位置规定 全局变量可以定义在类的最前面,也可以定义在类的最尾端,也就说一个方法可以访问在它之后定义的变量. 可以看到,第4行定义的test方法可以访问第8行定义的…
本文目录 • 一.在Java中,全局变量的定义没有严格的位置规定 • 二.在C语言中,全局变量定义的位置是有限制的 • 三.重复定义同一个变量 • 四.不同源文件中的同名变量 • 五.static关键字 • 六.static和extern的总结 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数…
预处理 1> 使用注意 以#开头 在代码被翻译成0和1之前执行 预处理指令可以出现在任何位置 作用域是从编写指令那一行开始到文件结束 2> 宏定义 基本使用 ① 使用#define定义 ② 宏定义常常用于替换常量,提高代码的可重用性 ③ 宏名一般大写 ④ 宏定义后边没有分号 有参数的宏 ① #define fun(a, b) a + b,定义两个数相加的宏 ② 通过fun(a, b)来调用这个宏 ③ 宏定义只是纯粹的代码替换,在编译时调用 ④ 在定义带参数的宏时,尽量为每个参数和最后的结果都加…
1.static 与 extern 对局部变量的作用 static 和extern 都是用来修饰变量(局部的static 实际也是全局的) static 修饰的变量 只有你的包含那个变量定义的源代码文件可以访问(内部的变量) extern定义的变量的哪个源文件都可以访问 只要声明了就可以(外部变量) 2.static 与 extern 对局部变量的作用 static 1) 延长局部变量的生命周期,从程序启动到程序退出,但是它并没有改变变量的作用域 2)定义变量的代码在整个程序运行期间仅仅会执行一…
一.extern与函数 如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.obj中定义的一个函数.将这些相关联的目标文件链接在一起后才能生成可执行文件. 先来理解2个概念: 外部函数:如果在当前文件中定义的函数允许其他文件访问.调用,就称为外部函数.C语言规定,不允许有同名的外部函数. 内部函数:如果在当前文件中定义的函数不允许其他文件访问.调用,只能在内部使用,就称为内部函…
本文目录 • 一.extern与函数 • 二.static与函数 • 三.static.extern与函数的总结说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略上一讲中大致介绍了变量的类型,不同类型的变量有不同的存储类型.不同的生命周期.不同的作用域.这讲介绍2个比较重要的关键字:static和extern.static和extern不仅可以用在变量上,还可以用在函数上.这讲先…
一.extern与函数 在前面我提到过一句话:如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.obj中定义的一个函数.将这些相关联的目标文件链接在一起后才能生成可执行文件. 先来理解2个概念: 外部函数:如果在当前文件中定义的函数允许其他文件访问.调用,就称为外部函数.C语言规定,不允许有同名的外部函数. 内部函数:如果在当前文件中定义的函数不允许其他文件访问.调用,只能在…
typedef 1.作用:给已经存在的类型起一个新的名称 2.使用场合: 1> 基本数据类型 2> 指针 3> 结构体 4> 枚举 5> 指向函数的指针 #include <stdio.h> typedef int MyInt; typedef MyInt MyInt2; // 给指针类型char *起一个新的类型名称String typedef char * String; /* struct Student { int age; }; typedef stru…
1.两者对全局变量 static对全局变量,表示定义一个内部变量 extern对全局变量,表示声明一个外部变量 说明: 1.内部变量:定义的变量只能在本文件中访问,不能被其他文件访问. 2.不同文件中的同名的内部变量互不影响. 3.外部变量:是指定义的变量可被同一工程中其他文件所访问, 4.默认情况下,所有的全局变量都是外部变量 5.同一工程项目中,不同文件中的同名的外部变量,代表着同一变量,指向内存中同一内存. 2.两者对函数作用 static对函数作用:表示定义和声明一个内部函数 exter…
1. extern 变量 extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量. 当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块活其他模块中使用,记住它是一个声明不是定义!也就是说B模块(编译单元)要是引用模块(编译单元)A中定义的全局变量或函数时,它只要包含A模块的头文件即可,在编译阶段,模块B虽然找不到该函数或变量,但它不会报错,它会…
我们在看一些大牛的第三方时,里面会出现很多const.static和extern,尤其是const和static,const和extern的结合使用,直接令很多小伙伴懵逼了,今天就详细讲解一下这三个关键字的正确使用方式. 一.const const的作用和宏是很类似的,其实,苹果是不推荐我们使用宏的,它更喜欢我们使用const,于是乎,在swift中宏就被抛弃了,我们只能使用const. 在这里简单聊一下const和宏的区别: 1.编译时刻  宏:预编译 const:编译 2.编译检查  宏没有…
<OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用const修饰的函数形参 直接修饰 一个形如 int Minus(const int a, const int b, int testCase); 的函数,const的意义是什么呢? 答:参数a被const修饰,说明在Minus函数内,编译器不允许a被别的变量(例如x)赋值(修改).参数b同理. 如果你写了a…
浅谈C/C++中的static和extern关键字 2011-04-21 16:57 海子 博客园 字号:T | T   static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明.本文主要介绍C/C++中的static和extern关键字. AD:   static是C++中常用的修饰符,它被用来控制变量…
转自:http://www.jianshu.com/p/2fd58ed2cf55 前言 本篇文章主要介绍在开发中怎么使用const.static.extern关键字. 一.const 与宏的区别: const 简介:我们在开发中经常为了省事,把一些常量抽成宏.但是苹果不推荐我们使用宏,推荐我们使用const常量,所有的系统通知都是用的const常量. 编译时刻:宏是预编译(在编译前处理),const 是编译阶段. 编译检查:宏不做检查,不会报编译错误,只是做替换,用宏定义的函数会报参数类型错误:…
以前写程序是,基本不管static和extern,一个工程文件也只有一个c文件.今天尝试用多个文件来写,自然就涉及到这两个关键词的使用,自己查了些资料,并且做了些实验,总结如下. extern的用法 可以扩展外部变量的作用域 如果在程序中某个地方定义了一个外部变量, 那么使用extern就可以扩展它的作用域. 举个栗子 #include <iostream> using namespace std; void fun(); int main() { extern int t; //将外部变量t…
1.首先,关于声明和定义的区别 这种写法(函数原型后加;号表示结束的写法)只能叫函数声明而不能叫函数定义,只有带函数体的声明才叫定义,比如下面 只有分配存储空间的变量声明才叫变量定义,其实函数也是一样,编译器只有见到函数定义才会生成指令,而指令在程序运行时当然也要占存储空间.那么没有函数体的函数声明有什么用呢?它为编译器提供了有用的信息,编译器在翻译代码的过程中,只有见到函数原型(不管带不带函数体)之后才知道这个函数的名字.参数类型和返回值,这样碰到函数调用时才知道怎么生成相应的指令,所以函数原…
一.const与宏的区别 const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编译(编译之前处理)const是编译阶段. 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误. 宏的好处:宏能定义一些函数,方法.const不能 宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换 注意:很多Blog都说使用宏,会消耗很多内存,我这验证并不会生成很多内存,宏定义的是常量,常量都放在常量区,…
.h文件中定义 static变量后,如 static QTcpSocket * socket; 那么一定要在.cpp中 构造函数的外面将其初始化为 QTcpSocket * Cfiletransfer::m_socket = NULL; 否则会报错:如无法识别的外部变量... # include <iostream> using namespace std; typedef struct { int Index; char str[256]; } stArr; class Base { pri…
1. extern 变量 extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量. 当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块活其他模块中使用,记住它是一个声明不是定义!也就是说B模块(编译单元)要是引用模块(编译单元)A中定义的全局变量或函数时,它只要包含A模块的头文件即可,在编译阶段,模块B虽然找不到该函数或变量,但它不会报错,它会…
static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明.本文主要介绍C/C++中的static和extern关键字. static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.extern, "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方…
static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明.本文主要介绍C/C++中的static和extern关键字. AD: 2013云计算架构师峰会课程资料下载   static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.extern, "C"是使C++能够调用C写…
1.先来介绍它的第一条也是最重要的一条:隐藏.(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.举例来说明.同时编译两个源文件,一个是a.c,另一个是main.c. //a.c char a = 'A'; // global variable void msg() { printf("Hello\n"); } //main.c int main() { extern char a; // extern varia…
先引入一下题啊,主要是看到有人这样写 我个人觉的这样写没什么意思,没有体现出了extern的特性.   为什么我要这样说,先谈谈include,总是有人觉得这个东西很神秘,很特殊不知道他干了什么.其实它没有我们想象的那么神秘,它就是把包含的文件完全的放到当前文件展开.在什么时候展开那在预编译简单就会完全的展开.对于上面的图片里的例子就是把1.c里面的俩句代码放到了2.c.   extern这个词是干什么的那?它是你在写C语言的时候写了几个文件,比如上面,1.c和2.c 但是注意在2.c里面人家可…
#ifdef __cplusplus // C++编译环境中才会定义__cplusplus (plus就是"+"的意思) extern "C" { // 告诉编译器下面的函数是c语言函数(因为c++和c语言对函数的编译转换不一样,主要是c++中存在重载) #endif 其实很简单,作用就是:如果此头文件是在c++中使用的(就是一个.cpp文件include此头文件,而不是一个.c文件),那么函数名称粉碎方式仍然使用C中的方式.(就是此函数编译后在object文件中的…
静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; //静态成员变量在项目刚运行的时候就分配内存,项目运 //行结束以后才销毁. // //2.静态成员变量被它所属类创建的所有对象共享. // //3.静态成员变量必须在类体外初始化. //格式为:类型 类名∷静态成员变量 = 初值 //例: int Stu :: a = 20; // //4.访问静态成…
IOS 成员变量,全局变量,局部变量定义,static与extern的区别 1,先说定义 1)成员变量定义:生存与该类的生命周期,变量存活周期跟你定义的该类实体对象一样:作用域是整个实体对象:可以在h文件中声明或者在m文件中@implementation上面添加的 #import “S1ViewController.h” @interface S1ViewController () //这里做声明 @end @implementation S1ViewController @end 举例:S1V…
c/c++中static和extern使用 在C/C++中static和extern都能够用来修饰函数和变量,可是是有差别的. 内部函数和内部变量:仅仅能在文件内使用的函数和变量. 外部函数和外部变量:可以被其他文件使用的函数和变量. static 1 对函数 定义一个内部函数 static void test() { } 声明一个内部函数 static void test(); 2 对全局变量 定义一个内部变量 static int a; 3 对局部变量 定义一个生命周期较长的局部变量. vo…
1.static 和 extern使用, 1)修饰局部变量 static修饰局部变量特点:延长局部变量的生命周期 ,static修饰的局部变量只会被执行一次 extern不能修饰局部变量 2)修饰全局变量 static修饰全局变量: 是一个内部变量,只能在本文件使用. extern修饰全局变量:是一个外部变量,可以在本文件和其他文件使用(有包含关系) 注意:.h 文件声明, .c文件定义 3)修饰函数 static修饰函数:是一个内部函数,只能在本文件中访问 extern修饰函数:是一个外部函数…
引用请注明出处:http://blog.csdn.net/int64ago/article/details/7396325 对于写了很多小程序的人,可能static和extern都用的很少,因为static和extern通常在工程量很大时候才能体现优势很必要性,这就不奇怪linux内核代码中"泛滥"着这两个关键词,而且据我所知,这也是面试经常被问道的,因为这涉及到的底层多一点.下面,就我自己总结的几点简要谈谈: 一.c语言内存空间布局 下面是google上找的一张c内存布局图,我先基于…