编译时候,头文件会添加到源文件中。所以头文件中定义static 变量, 实际上是在多个源文件内,都有一个该变量,是独立的(注意)。
工程中一般不要这样使用。
//a.h该文件内定义g_aa静态
#ifndef __A_H__
#define __A_H__
static int g_aa;
#endif
//aa.h
#ifndef __AA_H__
#define __AA_H__
void fun();
#endif
//aa.cpp
#include <stdio.h>
#include <stdlib.h>
#include "a.h"
void fun()
{
g_aa =2;
printf("addr=%x\n",&g_aa);
}
//bb.h
#ifndef __BB_H__
#define __BB_H__
void fun2();
#endif
//bb.cpp
#include <stdio.h>
#include <stdlib.h>
#include "a.h"
void fun2()
{
g_aa =3;
printf("22 addr=%x\n",&g_aa);
}
//main.cpp
#include <stdio.h>
#include <stdlib.h>
#include "aa.h"
#include "bb.h"
#include "a.h"
int main(int argc, char**argv)
{
fun();
fun2();
return 0;
}
运行结果是多个地址,显然是独立的
|
阅读(4131) | 评论(1) | 转发(0) |