错误:初始化元素不是常量

时间:2011-03-06 09:58:50

标签: c mmap

int * const front  = mmap(0, sizeof(int),    PROT_READ|PROT_WRITE,           MAP_SHARED|MAP_ANONYMOUS, -1, 0);
int * const back   = mmap(0, sizeof(int),    PROT_READ|PROT_WRITE|PROT_EXEC, MAP_SHARED|MAP_ANONYMOUS, -1, 0); 
int * const buffer = mmap(0, sizeof(int)*50, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_SHARED|MAP_ANONYMOUS, -1, 0);

我收到以下错误:“错误:初始化元素不是常量”

如何删除它? 我知道如果我做int a[b];这样的事情就行不通,但为什么会这样呢?

1 个答案:

答案 0 :(得分:3)

你还没有说过,但你很可能是在使用C而不是C ++,这些是静态持续时间的变量吗?在C中,您只能 使用编译时常量表达式初始化静态变量。函数调用不是编译时常量表达式。