【发布时间】:2016-02-09 04:59:26
【问题描述】:
当我编译这段代码时,
#include <stdio.h>
int *foo();
int main()
{
*foo()++;
return 0;
}
int *foo()
{
static int bar;
return &bar;
}
Clang 显示错误:
static2.c:7:8: error: expression is not assignable
为什么是非法的?我想bar 有静态存储持续时间,所以它的生命周期是程序的整个执行过程。虽然bar 本身对main() 不可见,但指针应该能够修改它。
这个版本的foo() 也不起作用,Clang 给了我同样的错误:
int *foo()
{
static int bar;
static int* ptr = &bar;
return ptr;
}
【问题讨论】:
标签: c static declaration