C 语言如何实现变量私有化(static)

引言:

链接属性:标识符的连接属性决定如何处理在不同文件中出现的标识符。标识符的连接属性共有3种--external, internal 和 none. none属性胡标识符总是被当作单独的个体;internal 属性的标识符在同一个源文件内的所有声明都指向同一个实体,但位于不同源文件的多个声明则分属于不同的实体;external 属性的标识符不论声明多少次,位于几个源文件都表示同一个实体。注意:不同环境下标识符的缺省链接属性是不同的。

重点:

关键字 static 和 extern用于在声明中修改标识符胡链接属性。如果某个变量在正常情况下具有external链接属性,在它前面加static,可以使它的链接属性变为internal。

下面通过代码证明:

//file1.h
#include <stdio.h>
//int var = 11;
//static int svar = 22;

void func();
/*
static void sfunc()//头文件中如果包含静态函数,则必须给出实现,否则编译报错
{

	printf("private func in file1.h");
}*/
//file1.c
#include "file1.h"
int var = 1;
static int svar = 2;
void func()
{
	printf("external func\n");
}
static void sfunc()
{
	printf("private func\n");
}
//main.c
#include <stdio.h>
#include "file1.h"
int main()
{
	extern int var;
	printf("var in file1 equals %d\n",var);	//正常输出
	extern int svar;
	//printf("svar in file1 equals %d\n", svar);//链接时报错
	//要想实现变量私有化,必须在源文件内定义不能在头文件内定义
	extern void func();
	func();		//正常输出
	extern void sfunc();//链接时报错
	//sfunc();
	return 0;
}

本文主要出自 《C 和 指针》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值