C/ c++预定义具有内存值的数组
C/C++ predefine array with memory values
我想用特定内存位置的数据对一些数组进行预定义,但由于某种原因它不工作。
// Location of first byte in memory
#define MEMORY 0x7800
// Take a data from memory to array which will be containing the data
const uint8_t *MemArray[3] = { (const uint8_t *)MEMORY,
(const uint8_t *)MEMORY+1,
(const uint8_t *)MEMORY+3 };
// Now, I want to define some another array with values upper, but it not working
const uint8_t TargetArray[7] = { 1,2,3,4,
(const uint8_t)(*MemArray[0]),
(const uint8_t)(*MemArray[1]),
(const uint8_t)(*MemArray[2]) };
有人知道怎么做吗?
编译器在(const uint8_t)(*MemArray[i])行
得到警告和错误警告[Pe191]:类型限定符对强制类型D:..Sourcefile.c
错误[Pe028]:表达式必须有一个常量D:..Sourcefile.c
我使用IAR编译器8051核心
初始化器值必须是编译时常量。因此,它们不能依赖于从内存中读取的值,编译器必须能够生成初始化的数组。
您需要包含实际的代码来设置它。在程序的其余部分之前,请先在main()
中执行此操作。
地址是否与非常慢的设备相关联?否则,你可以让const指针指向该位置,然后随意读取值。
像这样:
#define MEMORY 0x7800
const struct __attribute__ ((__packed__)){
uint8_t foo;
uint8_t bar;
uint8_t __reserved;
uint8_t baz;
} *mem = (const void *)MEMORY;
您可以通过mem->foo
等读取位置。
相关文章:
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 使用无符号字符数组有效存储内存
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 为什么调用堆栈数组会导致内存泄漏
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 查找自动生成键并具有线性内存消耗的小型关联数组
- C++,为什么数组比矢量更快,使用更少的内存
- 介于 [固定数组] 和 [带内存分配的指针] 之间的性能
- 当另一个数组是内存集时,内存集是否会更改数组长度?
- 动态分配字符数组的内存
- 将内存分配返回值强制转换为 TYPE 数组
- 销毁C++中动态分配的内存(数组对象)
- 给定特定内存地址的数组的动态内存分配
- 如何通过 malloc 为队列数组分配内存?
- 如何使用内存集清除字符数组
- 如何初始化所有元素为 0 的指针的二维动态内存数组
- 共享内存数组是否由 CreateFileMapping/MapViewOfFile 零初始化
- C++ 分配 struc 的内存数组
- 在CUDA中有效初始化共享内存数组