static和extern的用法总结

static用法见:
1、http://www.cnblogs.com/yezhenhan/archive/2011/10/31/2229724.html
2、http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_5297.html

extern用法:
1、http://blog.csdn.net/cameracanon/article/details/4061419
2、http://blog.csdn.net/liu1028701143/article/details/7359381

简单地理解static:
(1)如果static放在头文件中的话,被2个不同的cpp文件分别引入时,那么这两个cpp都有一个自己的这个static变量,并且相互不受影响。
(2)static用来修饰全局变量时,只能被本文件引用,不会被其他文件访问和修改,其他文件可以定义相同名字的变量;
(3)static用来修饰函数时,只能被本文件引用,不会被其他文件访问和修改,其他文件可以定义相同名字的函数;
(4)static用来修饰局部变量(即某个函数内部的变量)时,退出函数时,该变量仍保留着相应的值;
例如:
void count();
int main()
{
   int i;
   for (i = 1; i <= 3; i++)
     count();
   return 0;
}
void count()
{
   static num = 0;
     num++;
     printf(" I have been called %d",num,"timesn");
}

输出结果为:
I have been called 1 times.
I have been called 2 times.
I have been called 3 times.


简单地理解extern:
(1)extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
(2)extern用在变量声明中常常有这样一个作用,你在*.c文件中定义声明了一个全局的变量,这个全局的变量如果要被其他x.c文件引用,就放在*.h中并用extern来引用声明,然后再x.c中包含该*.h头文件。

(3)(个人规则)函数的定义声明带不带extern其实都表示同一个意思,即不带时默认是extern的,所以一般定义声明时不带extern。

(4)(个人规则)函数的引用声明必须带关键字extern,暗示这个函数可能在别的源文件里定义,没有其它作用。

(5)如果定义函数(函数的具体实现)的c/cpp文件在对应的头文件中声明了所定义的函数(头文件中该函数前可带可不带extern),那么在其他c/cpp文件中要使用这些函数,只需要包含这个头文件即可。如果你不想包含头文件,那么你要在其他c/cpp中使用extern声明该函数(仅仅表明这个函数可能在别的源文件里定义,没有其它作用)。如下所述:

first.h头文件内部:

#ifndef Function

#define Function

void count();

……

#endif

 

first.c文件内部:

#include "first.h"//count()函数的声明

……

void count()

{

……

}

 

//如果不想包括头文件,second.c文件内部:

extern void count();//表明是其他文件里面的函数

 

//包含头文件,second.c文件内部

#include "fisrt.h"//这个就包含了 void count()函数的声明


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给vmware虚拟机中的ubuntu 14.04扩大磁盘分区

一.先取得root 权限 $ su - root Password: su: Authentication failure Sorry. 这时候输入 $ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully 这时候就可以进入根目录了。 二.具体安装步骤 用VMware安装了一…

个人管理 - 书籍推荐(待读)

在《个人管理 &#xff0d; 书籍推荐&#xff08;已读&#xff09;》中推荐了一些书籍&#xff0c;有些人从中选取了一些&#xff0c;但其实还有很多好书我还没有读&#xff0c;为了给大家更多选择&#xff0c;我把我欠下的书债也贴上来。由于豆瓣还没有提供书列表的功能&#…

windows7旗舰版序列号[经测试,第一枚即可完成升级!]

windows7旗舰版序列号[经测试&#xff0c;第一枚即可完成升级!] 第一枚&#xff1a;TFP9Y-VCY3P-VVH3T-8XXCC-MF4YK 第二枚&#xff1a;KH2J9-PC326-T44D4-39H6V-TVPBY 第三枚&#xff1a;C4M9W-WPRDG-QBB3F-VM9K8-KDQ9Y 第四枚&#xff1a;J783Y-JKQWR-677Q8-KCXTF-BHWGC 第五…

Node.js用6行代码1个JS文件搭建一个HTTP静态服务器

2019独角兽企业重金招聘Python工程师标准>>> Node.js宣言&#xff1a;Node.js is a platform built on Chromes JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes i…

制作jffs2根文件系统

一、制作mkfs.jffs2工具 首先得准备好两个软件包 &#xff0c;一个是MTD设备的工具包&#xff0c;另一个是zlib压缩包&#xff0c;在这我的MTD设备工具包为mtd-snapshot-20050519.tart.tar&#xff0c;zlib压缩包是zlib-1.2.3.tar.tar。 步骤&#xff1a; &#xff08;1&#…

添加WCF服务引用失败解决办法

最近在玩SL4 beta&#xff0c;写了一个WCF的服务&#xff0c;在Silverlight Application中选择Add Service Reference&#xff0c;填入服务地址&#xff0c;但在生成服务引用代码&#xff08;应该就是代理类&#xff09;时发生错误&#xff1a;Error 7 Custom tool error: Fail…

javascript设计模式简单介绍之【工厂模式】

工厂模式分为两种&#xff0c;一种是简单工厂模式。另一种称之为工厂模式。 简单工厂模式是使用一个外部的单体或者静态方法来生成实例。 而工厂模式使用子类来决定内部成员要实现那个具体的类的实例。 工厂模式要求被具体实现的类&#xff0c;必须提供相同的接口。 下面我们将…

srand函数简介

srand函数是随机数发生器的初始化函数。 原型:void srand(unsigned seed); 用法:它需要提供一个种子&#xff0c;这个种子会对应一个随机数&#xff0c;如果使用相同的种子后面的rand()函数会出现一样的随机数。如:srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复…

python库--pandas--Series.str--字符串处理

目录 原数据字符大小写转换字符串拼接字符填充/插入/扩展字符串内容判断查找统计转码删减/截取分割/替换原数据 import pandas as pd a pd.Series([aSd, asd, dfd fsAsf sfs]) b pd.Series([None, asd, fgh]) indexab0aSdNone1asdasd2dfd fsAsf sfsfgh字符大小写转换 a.str.l…

linux下多线程之pthread_detach(pthread_self())

写个碰到的问题&#xff0c;记录下自己的技术之路点滴 pthread_detach(pthread_self()) linux线程执行和windows不同&#xff0c;pthread有两种状态joinable状态和unjoinable状态&#xff0c; 如果线程是joinable状态&#xff0c;当线程函数自己返回退出时或pthread_exit时都不…

Unique Binary Search Trees

使用带标记的DP int result[1000];int numTrees(int n) {result[0] 1;result[1] 1;result[2] 2;// Start typing your C/C solution below// DO NOT write int main() functionif(result[n] ! 0)return result[n];int num 0, t;for(t 1; t < n; t){num num numTrees(…

ERROR: Start Page at 'www/index.html' was not found

用Xcode 4.3.2新建了一个PhoneGap的应用&#xff0c;www目录下存在index.html文件&#xff0c;但是运行的时候&#xff0c;报错&#xff1a;ERROR: Start Page at www/index.html was not found&#xff0c;这是PhoneGap和Xcode 4还不兼容导致的。 可以右键项目名->Add File…

Linux线程-互斥锁pthread_mutex_t

在线程实际运行过程中&#xff0c;我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务&#xff1b;互斥锁的使用过程中&#xff0c;主要有pthread_mutex_init&#xff0c;pthread_mutex_destory&#xff0c;pthread_mutex_lock&#xff0c;pthread_mutex_unlock这几个函…

百度前端技术学院,学习第一天。

有基础&#xff0c;所以第一天的了解基本可以跳过。 略.. 转载于:https://www.cnblogs.com/devanwu/p/11149051.html

ULS 日志为空

解决方案&#xff1a; 1.保存为ChangeAccounts_SPTraceV4.ps1&#xff0c;运行 # Get the tracing service. $farm Get-SPFarm $tracingService $farm.Services | where {$_.Name -eq "SPTraceV4"} # Get the "svc_sp_services" managed account. $manag…

2013 ACM/ICPC Asia Regional Changsha Online - C

2019独角兽企业重金招聘Python工程师标准>>> 竟然没写出来 还是比较坑&#xff0c;好吧 Color Representation Conversion Time Limit: 1 Second Memory Limit: 32768 KB So far, there are many color models in different area. For screen display, the most …

vs2017常量文本字符串无法转换成char*

vs2017中这种写法编译不通过&#xff1a;char* pTest "hello"; 解决方法&#xff1a;在C/C选项-命令行-附加选项中增加&#xff1a;/Zc:strictStrings- (Disable string literal type conversion)转载于:https://www.cnblogs.com/dqloveu/p/11149222.html

linux中DIR、dirent、opendir()、readdir()、closedir()函数的使用

一、 1、DIR 属性&#xff1a;数据类型&#xff1b; 头文件&#xff1a;#include <dirent.h> 用法&#xff1a;定义一个指向文件目录的指针&#xff1b; 举例&#xff1a;DIR *dirpt null; 2、dirent 属性&#xff1a;数据类型&#xff0c;结构体&#xff1b; 头…

BNUOJ 4358 左手定则 搜索

题目链接&#xff1a;http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid4358 一道很好的搜索题&#xff0c;要注意DFS函数的写法&#xff0c;特别是return的写法。 View Code 1 #include <iostream>2 #include <cstring>3 #include <cstdio>4 using names…

CentOS安装Confluence Wiki步骤

参考&#xff1a;http://supernetwork.blog.51cto.com/2304163/1187066参考&#xff1a;http://yjiang.tk/?p1085需要的文件CentOS-6.5-x86_64-minimal.isojre-7u67-linux-x64.rpmatlassian-confluence-5.4.4-x64.binmysql-connector-java-5.1.32-bin.jarconfluence5.1-crack.…