Chinaunix首页 | 论坛 | 博客
  • 博客访问: 312833
  • 博文数量: 169
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 12
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-10 12:00
文章分类

全部博文(169)

文章存档

2014年(38)

2013年(131)

我的朋友

分类: C/C++

2014-02-24 22:06:21

原文地址:静态变量分析 作者:CUTianrui007

FileName.c中定义一个全局静态变量,static U8 u8StTest,这个静态变量不在任何函数中.在函数中定义一个静态变量,比如

 

Void Func1()

{

       Static U8 u8StTest;

          //other statements

}

那么这两个变量会不会重名呢?不会,为什么?

静态变量编译会对其进行重命名,也就是将静态变量的作用范围作为静态变量的名字的一部分,则作用范围不同,其名字也就不同,对于不在任何函数中的全局静态变量,其可能的重命名结果:_FileName@u8StTest,其格式为:文件名+变量名, 而函数中的局部静态变量,其重命名结果可能是:_ FileName@Func1@u8StTest,其格式为: 文件名+函数名+变量名.正是由于重命名,二者区分开了.

深入思考一下,其实在C++中,C++中的成员变量和成员函数也会重命名中被加上类名,比如

class ClassTest

{

public:

   U8 test1;

public :

    void Func1();
}

最终,编译器会将会生成如下的名字:_ClassTest@test1和_ClassTest@Func1.

重命名机制是编译器所独有的,各个编译器命名机制各不相同.

阅读(650) | 评论(0) | 转发(0) |
0

上一篇:stm32f4关于pwm

下一篇:说说指针

给主人留下些什么吧!~~