A.c 和B.c两个c文件中使用了两个相同名字的static变量

A.c 和B.c两个c文件中使用了两个相同名字的static变量,编译的时候会不会有问题?

在头文件中定义static,然后这个头文件被不同的文件引用。我们知道,static的作用域是定义它的源文件中,这样的方式,会在每个引用它的文件中都生成一个本地的static 变量。static 变量是静态变量,和全局变量一样,都存放在静态存储区,但是,值得注意的是,编译器在编译的时候,对他们的命名是不同的。因此,存放的位置也不同,这时,在头文件中定义的static变量,在不同的文件中引用,就是不同的静态变量。例子如下图。

在vs2010中,无法include .h文件,很奇怪,没有解决。可以引用.c,所以,例子中引用.c。

test.c中只是定义了变量g_int,充当.h文件。

static int g_int = 3;

test1.cpp中引用test.c文件

#include<stdio.h>
#include <stdlib.h>
#include "test.c"
void TestSource1()
{

  g_int= 5;
  printf("g_int's address in Source1.cpp: %d\n", &g_int);
  printf("g_int's value in Source1.cpp: %d\n", g_int);
}

test2.cpp中引用test.c文件

#include<stdio.h>
#include <stdlib.h>
#include "test.c"
void TestSource2()

  printf("g_int's address in Source2.cpp: %d\n", &g_int);
  printf("g_int's value in Source2.cpp: %d\n", g_int);
}

 

func.c文件声明了函数。

void TestSource1();
void TestSource2();

 

main函数执行测试

 #include<stdio.h>
#include <stdlib.h>
#include "func.c"
void main()
 {
TestSource();
TestSource2();

     system("pause");
 }

 

 
 

从该博客中学习,http://blog.sina.com.cn/s/blog_4a3946360100yagx.html,讲述很到位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值