我正在使用一些内存指针。我不想使用哈希定义,请将讨论放在一边。我只是想知道为什么这个不能编译:const指针指向一个const指针
#include <stdio.h>
static const unsigned long *const pMemAddrA = (unsigned long *) 0x00000200ul;
static const unsigned long *const pMemAddrB = pMemAddrA;
int main (void)
{
printf("%x", (unsigned int) pMemAddrB);
return 0;
}
编译器GCC输出:
||=== TestConst, Debug ===|
...main.c|4|error: initializer element is not constant|
||=== Build finished: 1 errors, 0 warnings ===|
编辑:
看完了答案,我很高兴地知道如何去关于这个问题。
但我不明白为什么它是一个问题。从我所知道的静态内存在程序启动时被分配。我知道如果变量“活”在不同的文件中,并且编译器无法保证变量的分配顺序,就会出现问题。然而,如果两个变量都“活在”同一个文件中 - 就像两个变量都在同一个函数中一样 - 我想编译器可以确保内存按照文件中声明的变量顺序分配,理解为什么声明和初始化一个const指针指向另一个const指针是个问题。如果有人能够启发我,我会很开心。
什么是不工作的意思?如果它没有编译后编译器错误,如果它显示输出后的意外输出。 – djechlin
如果你想添加*什么*“不起作用”的意思,我们可以帮助你更好。 – glglgl
对不起。 – AudioDroid