一位同事正在进行一些代码审查,他看到许多类似于以下内容的静态变量声明:
void someFunc(){
static int foo;
static int bar;
static int baz;
foo = 0;
bar = 0;
baz = 0;
/*
rest of the function code goes here
*/
}
Run Code Online (Sandbox Code Playgroud)
我们的问题是,编写此代码的程序员是否只是不清楚静态变量的概念,还是有一些聪明的理由这样做是故意的?
如果它有所不同,环境是嵌入式微控制器,编译器是GCC.
das*_*ght 13
如果它不是一个嵌入式系统,你可能是正确的:我敢打赌,程序员不清楚静态的概念,并且必须写下这个:
static int foo = 0;
static int bar = 0;
static int baz = 0;
Run Code Online (Sandbox Code Playgroud)
但是,在嵌入式系统中,他们可能习惯于static避免在自动存储中(即在堆栈上)分配变量.这可以节省一些CPU周期,因为静态变量的地址将"融入"编译方法的二进制代码.