| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 996 人关注过本帖
标题:[求助]如何屏蔽其它文件的变量
只看楼主 加入收藏
kangkai
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-9-6
收藏
得分:0 
thank you all the same

我还是不太明白,extern是声明要用到外部的东西的吧,但我就是要屏蔽掉其它文件的全局变量的,使此文件的全局变量不受其它文件的全局变量的干扰

谢谢回贴 的朋友
2005-09-17 21:38
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
请不要试图用“汉语言”来表达“C语言”的问题,贴上代码。

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-09-17 21:52
kangkai
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-9-6
收藏
得分:0 
//file1.h
#include<stdio.h>
#include<stdlib.h>

typedef char  ElemType;
/*---------------二叉树结构类型定义---------------*/
typedef struct BNode
        {
          int Desent;/*存放该结点子孙的个数*/
          ElemType Data;/*data域*/
          struct BNode *Lson,*Rson;    /*左右孩子指针*/
         }BNode,*BinTree;
/*-------------------------------------------------------------*/
void CreateBinTree(BinTree *T)
{   /*以加入节点的先序PreOrder序列输入,构造二叉链表 */
    ElemType ch;
    scanf("%c",&ch);
    if(ch=='#')*T=NULL;/*读入0时,将相应节点置空*/
    else{
        *T=(BinTree *)malloc(sizeof(BNode));
        (*T)->Data=ch;
        CreateBinTree(&(*T)->Lson);
        CreateBinTree(&(*T)->Rson);
        }
}

/*-------------------------------------------------------------*/
void Visit(ElemType e)
{
    printf("%c ",e);
}
/*---------------------计算总结点数----------------------------*/

int NUM(BinTree bt)
{
  if (bt==NULL) return 0;     /*递归调用的结束条件*/
  else return NUM(bt->Lson)+NUM(bt->Rson)+1;
}
/*-----------------------计算各结点子孙数----------------------*/
void CountDes(BinTree bt)
{
    if(bt==NULL)bt->Desent=0;
    else
    {
        int k=NUM(bt);
        bt->Desent=k-1;
        CountDes(bt->Lson);
        CountDes(bt->Rson);
    }
}
/*-------------------先序输出各结点值及子孙数------------------*/
void PreOrderOut(BinTree bt)
{
    if(bt==NULL)return;
    Visit(bt->Data);
    printf("%d\n",bt->Desent);
    PreOrderOut(bt->Lson);
    PreOrderOut(bt->Rson);
}
/*--------------------------------------------------------------*/
main()
{
    BinTree  t;
    CreateBinTree(&t);
    CountDes(t);
    PreOrderOut(t);
    getch();
}
//file2.c
#include"file1.h"
............//请问这里加什么起屏蔽作用的语句
/*---------------二叉树结构类型定义---------------*/
typedef struct BNode
        {
        ElemType Data;/*data域*/
          struct BNode *Lson,*Rson;    /*左右孩子指针*/
         }BNode,*BinTree;
......
//file1.h中定义了一个结构,file2.c中又定义了一个结构体名相同的结构,如何才能不发生冲突,前提是不改结构体名
2005-09-17 22:13
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
#ifndef ...

#define ....

typedef struct BNode
        {
          int Desent;/*存放该结点子孙的个数*/
          ElemType Data;/*data域*/
          struct BNode *Lson,*Rson;    /*左右孩子指针*/
         }BNode,*BinTree;

#endif

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-09-17 23:08
kangkai
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-9-6
收藏
得分:0 
谢谢knocker 我找的就是这
2005-09-17 23:17
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
zinking 说的没错,使用namespace 可以解决这个问题,
下面给你举个例子:

//file1.h
namespace file1
{
    int a = 2;
    void setValue(int value)
    {
        a = value;
    }
}
//test.cpp
#include <iostream>
#include "file1.h"
using namespace std;

namespace file2
{
    int a = 3;
    void setValue(int value)
    {
        value++;
        a = value;
    }
}

int main()
{
    int value = 9;
    file2::setValue(value);
    cout<<file2::a<<endl;

    file1::setValue(value);
    cout<<file1::a<<endl;
  
    return 0;
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-17 23:28
kangkai
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-9-6
收藏
得分:0 
谢谢zinking ,谢谢kai!
我对c ++不熟,但我正从c转向c++
谢谢你的指点
2005-09-17 23:35
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
C/C++ 是一家,学习C不转向C++, 或者说,懂C而不懂C++就像一个断臂的人,同样懂C++而不懂C,也是一个断臂的人。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-17 23:53
kangkai
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-9-6
收藏
得分:0 
我今天看到的
http://bbs.
kai版主把namespace讲得很详细
2005-09-18 18:05
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
kangkai, 你看得还真够仔细的,把沉到这么下面的帖子都翻了出来。 我本来是想把C++做个整理,陆陆续续的写出来,也算自己做个总结,或复习一下C++。不过事情太多,就没有继续,看来是虎头蛇尾了。 你的那篇关于为什么C++里面没有 gotoX()的帖子我也看到了。这样的问题以前也有人提过了。我也给出了回答。不过这样的问题一再的提,我一再的回答,就觉得有点无奈,有点累了。 如果有个FAQ就好了。这个要 静 老板来支持了。 我看到很多论坛有FAQ 专门一栏。在FAQ里面再设置相关的FAQ,如C FAQ, C++ FAQ,JAVA FAQ,VB FAQ,WinApi FAQ 等等。这样,大家就不必重复提问题了。 静老板的这个论坛有一些Bug,比如明明有的一些帖子却搜索不到。 下面简单地来回答你的那个为什么C++里面没有 gotoX() 函数的问题,类似的问题还有C++为什么没有 graphics.h ? 回答如下:C++ 是一门非商业编程语言,也就是说,C++不是由一家商业公司开发的。那么在开发这门语言的时候,就有一个宗旨,那就是尽量与操作系统无关,也就是说,C++的函数不直接或间接的调用操作系统的Api。基于这么一个原因,C++ 里面没有 graphics.h 这么个头文件。C++ 也不支持多线程。 如果你要画图,那么可以使用相关的WinApi, 这已经是windowsprogramming 的范畴了。 Borland 所开发的库,具有你所说的那个函数,但是这不是C++ 标准。你这样写的代码也只有在BC下能够编译,而在VC和其他符合C++ 标准的编译器上将无法编译。 说到编译器,希望你选择Dev 和 VC,这也是我使用的两套工具,选择Dev 是因为它绝对符合C++标准,它采用的是GCC 编译器,GCC是一致公认的完全符合C++ 标准的编译器。同时Dev 也可以编写windows 程序,还有一个理由,就是Dev是免费的,可以在网上免费下载,下载地址用Google搜索一下,就可以看到。使用VC,是因为它对单步调试的最人性化支持,但是VC中有一些Bug,所以写程序时,我通过两套IDE 来测试我的程序,只有在Dev 下通过测试,才是最终通过。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-18 20:09
快速回复:[求助]如何屏蔽其它文件的变量
数据加载中...
 
   



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

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