免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: larters
打印 上一主题 下一主题

[C] 问个很简单的问题,有关头文件,还有全局变量 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-09-10 11:59 |只看该作者
回复  larters


    那必须是一样的,全局变量只定义一次,可以多次声明但并不会改变变量的地址。定义 ...
snowboy9859 发表于 2011-09-10 10:48



    在yyy.h里面写

int g_count;

int g_count=0;

效果是完全不一样的?

如果写
int g_count;
的话,效果和
extern int g_count;一样?
对吗?

论坛徽章:
0
12 [报告]
发表于 2011-09-10 12:23 |只看该作者
我试了一下

确实和我说的一样

int g_count;

int g_count=0;

效果是完全不一样的

论坛徽章:
0
13 [报告]
发表于 2011-09-10 14:16 |只看该作者
回复 11# larters


    有人在头文件定义变量么?那还要.c何用?既然放在了头文件里面,就可以默认为声明

论坛徽章:
0
14 [报告]
发表于 2011-09-10 14:17 |只看该作者
回复 12# larters


    定义全局变量一般都需要初始化,这样便于理解。别整个定义全局变量不初始化,声明全局变量不加extern,谁能分得清你是定义还是声明,估计只有天知道,你知道。

论坛徽章:
0
15 [报告]
发表于 2011-09-10 14:30 |只看该作者
回复 11# larters


    int g_count;//在你这里是声明,只是你少了extern,但建议你不要把关键字省掉,别人会很不解;

int g_count=0;//是定义,一般全局变量定义时都初始化

效果是完全不一样的?//效果能一样么?

如果写
int g_count;//该语句可能是声明,也可能是定义。如果在该文件外部有该变量的定义,则会使用外部定义的变量,这时这个语句起的是声明的作用。否则,这里就是一个定义语句,起定义的作 用。
             //因此这个语句会让人分不清是全局变量g_count的定义,还是外部全局变量g_count的声明。为提高程序可读性,请使用extern声明外部的全局变量,如果定义全局变量,建议显式初始化


的话,效果和
extern int g_count;一样?
对吗?

论坛徽章:
0
16 [报告]
发表于 2011-09-10 17:34 |只看该作者
我是受害者。。。。。

我就是看了这个代码,不明白他想干嘛

论坛徽章:
0
17 [报告]
发表于 2011-09-10 19:14 |只看该作者
回复 16# larters


    我说话比较直,如有冒犯之处望海涵。

论坛徽章:
0
18 [报告]
发表于 2011-09-10 19:48 |只看该作者
一个头文件,YYYYY.h

在这个头文件里面声明全局变量,int g_count;

2个c文件,都include 这个头文件
...
larters 发表于 2011-09-10 10:16


    就写代码而言

    我觉得应该有个 YYYYY.c
    在 YYYYY.c 定义变量 并且赋初值

    #include "YYYYY.h"
    extern int g_count = 0 ;

    在 YYYYY.h 中 写
    extern int g_count  ;

    然后其他的模块简单地
    #include "YYYYY.h"
    就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP