| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1983 人关注过本帖
标题:static 类型数据的作用范围
只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
 问题点数:0 回复次数:6 
static 类型数据的作用范围
一直以为static 类型数据只能在本文件中
但是今天发现当某个文件B include 这个文件A(如附件)时,这个文件B也将能使用文件A中的static 类型数据

而且,把他们都添加到工程中,竟然也不出错,没有重复定义问题!!
好奇怪的 static 类型数据 ,到底该怎么理解呢 ??

[[it] 本帖最后由 vfdff 于 2008-12-12 23:40 编辑 [/it]]

testinp.rar (918 Bytes)


工程构架.JPG (54.9 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: include static 作用域 
2008-12-12 23:37
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
http://baike.baidu.com/view/536145.htm

百度搜的,希望对您能有些帮助。
2008-12-13 01:23
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
1. "static 类型数据只能在本文件中",肯定没有错;
   你的程序也肯定没有错。
2. 如果文件test.cpp中include头文件head.h,head.h中申明变量int i,请问int i是不是属于test.cpp的“本文件”?
  是的。因为include只是把head.h的内容导入test.cpp,对编译来说,和在test.cpp中重写一遍head.h没有区别。
3. 哪里有问题?你的用法有问题。
static 类型数据只能在本文件中,是说实现文件中定义的数据不可以通过申明文件导出,再给其他实现文件使用。头文件是用来申明数据的,不是用来定义数据的。
真正有用的static,你只可能在.c,.cpp文件中看到。
2008-12-13 08:11
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 第3楼 woshiyun 的帖子
在头文件中定义了 static 类型数据
如果有多个文件包含这个头文件并使用了其中的变量
会不会有冲突呢 ??

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-12-15 15:12
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
回复 第4楼 vfdff 的帖子
不冲突,每个实现文件中保留自己的数据。

//head.h
static int k=9;        //重申,不要在头文件中定义数据。虽然这样不会有语法错。
void fff();

//cpp2.cpp
#include<stdio.h>
#include"head.h"

void fff()
{
    k=0;
   printf("%d\n",k);
}

//cpp1.cpp
#include<stdio.h>
#include"head.h"

int main()
{
   fff();
   printf("%d\n",k);
   return 0;
}

以上3个文件。static int k=9;是对的,以为“static 类型数据只能在本文件中” 。如果去掉static就编译错,重复定义了。
2008-12-15 16:39
嬿·嘄·骊·戨
Rank: 2
来 自:天府之国
等 级:论坛游民
帖 子:84
专家分:25
注 册:2008-10-16
收藏
得分:0 
LS的难道是高手````

解释得很舒服啊``
2008-12-15 19:17
快速回复:static 类型数据的作用范围
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016390 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved