不同文件中的相同静态变量

时间:2014-06-12 06:59:13

标签: c

我很欢迎大家回答这个问题。 Q1) 如果File1.c包含static int a; 和File2.c包含static int a;

如果这两个文件属于同一个项目。

如果是这样,编译会抛出任何错误吗? 如果它不会抛出任何错误为什么?正如我们宣布的那样..?

Q2)一个静态变量X;在prog1.c中声明如何在prog2.c中使用X的值

告诉我没有从prog1.c中全局声明的函数返回值的另一种方式

注意:有些人告诉我有关GET和SET函数的信息,我们如何使用它来获取静态var值..?有没有其他方法来访问该值。?

3 个答案:

答案 0 :(得分:2)

"静态"的全部意义。关键字是指变量(或函数)仅在定义它的文件中可用。所以这两个变量完全是分开的。因此没有错误,也没有可能从另一个文件中访问一个。

答案 1 :(得分:0)

编译会抛出任何错误,如果是这样的话为什么?如果它不会抛出任何错误为什么?正如我们宣布的那样..?

不,不。它具有由于static存储类而声明的特定文件的范围。将static用于全局变量和函数意味着它们只对该翻译单元可见。

Q2)一个静态变量X;在prog1.c中声明如何在prog2.c中使用X的值

由于static,您无法再次对其进行外展。它在声明的源文件中是私有的。

修改

你说我如何从一个文件访问静态变量到另一个文件。但要这样做,static关键字的含义是什么?采用这种最佳方法只需删除static关键字。

通过糟糕的编码风格,您可以使用类似的函数进行访问。

static int myvar;


int * accesssaticvar() {
   return &myvar;
}

答案 2 :(得分:0)

实际上这是一个面试问题我告诉他同样在变量之前删除静态他说我只想在我的文件中访问那个静态变量告诉获取值的方法吗?

我告诉他全局声明一个函数并返回静态var,因为该函数只通过调用该函数返回值,我们可以得到值?他说一些GET和SET函数用法而不是从函数返回。我不知道的事情......

我甚至意识到,如果我们想破坏静态规则,将var定义为静态是什么意思。问题可能是愚蠢的......或者有办法访问私有变量....