搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ static 类型数据的作用范围
标题:
static 类型数据的作用范围
只看楼主
vfdff
等 级:
侠之大者
威 望:
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
广陵绝唱
等 级:
贵宾
威 望:
29
帖 子:3607
专家分:1709
注 册:2008-2-15
第
2
楼
得分:0
http://baike.baidu.com/view/536145.htm
百度搜的,希望对您能有些帮助。
2008-12-13 01:23
woshiyun
等 级:
新手上路
威 望:
2
帖 子:348
专家分:0
注 册:2008-6-16
第
3
楼
得分: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
等 级:
侠之大者
威 望:
8
帖 子:2172
专家分:425
注 册:2005-7-15
第
4
楼
得分:0
回复 第3楼 woshiyun 的帖子
在头文件中定义了 static 类型数据
如果有多个文件包含这个头文件并使用了其中的变量
会不会有冲突呢 ??
~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-12-15 15:12
woshiyun
等 级:
新手上路
威 望:
2
帖 子:348
专家分:0
注 册:2008-6-16
第
5
楼
得分: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
嬿·嘄·骊·戨
来 自:天府之国
等 级:
论坛游民
帖 子:84
专家分:25
注 册:2008-10-16
第
6
楼
得分:0
LS的难道是高手````
解释得很舒服啊``
2008-12-15 19:17
7
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-249035-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.253575 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved