c - 如何将常量分配给指针?

标签 c pointers

我想将一个地址值分配给一个指针,但我收到了这个警告:

#define PRODUCT_NUMBER_ADDR  0x12345

"foo\foo.c", line 1444: cc1967: {D} warning: "long *" pointer set to
          literal value - volatile needed?
              ram_address = (long*) (PRODUCT_NUMBER_ADDR);
                                     ^

如何正确地将我的地址分配给我的指针?

最佳答案

改变:

ram_address = (long*) (PRODUCT_NUMBER_ADDR);

ram_address = (volatile long*) (PRODUCT_NUMBER_ADDR);

还要确保 ram_address 被声明为 volatile long *。此处使用 volatile 告诉编译器内存对象的值可能会意外更改,因此编译器不应做出任何缓存假设。

关于c - 如何将常量分配给指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294039/

相关文章:

c - 在 C 中读取/写入 .bmp 文件时出现问题

c - 正在重新分配的指针未分配

asp.net - 如何在VS2012下构建SplendidCRM 2.1?

c - 如何将流 (FILE *) 与标准输出相关联?

c - 将新节点添加到我的链表堆栈中会将所有旧节点更新为新节点

c++ - 为指针分配空间

c++ - 结构体上的指针运算

c - gcc:具有 sizeof 值的前向指针地址

c - C语言中如何将十六进制值转换为二进制值

c - 如何在C中初始化 bool 指针?