是否可以在运行时为宏分配地址
Is it possible to assign an address to a macro during a runtime?
假设header.hpp中定义了一个宏MY_MACRO
。通常,我可以用覆盖source.cppheader文件中的宏定义
//source.cpp
#include "header.hpp"
#undef MY_MACRO
#define MY_MACRO 0x080000
现在,我在函数中有一个数组(myData
(,并想将数组的起始地址分配给MY_MACRO
。我试着像下面这样做,但不起作用:
void testFunction()
{
uint8_t myData[5] = {1,2,3,4,5};
#undef MY_MACRO
#define MY_MACRO &myData
const uint8_t *dataPointer = reinterpret_cast<uint8_t *>(MY_MACRO);
#undef MY_MACRO
#define MY_MACRO 0x080000
}
可能的方法是什么?
是否可以在运行时为宏分配地址?
否。预处理器宏在预处理时进行处理,预处理发生在编译之前,也发生在运行时之前。
然而,你写的确实有效。预处理后,生成的c++将是:
uint8_t myData[5] = {1,2,3,4,5};
const uint8_t *dataPointer = reinterpret_cast<uint8_t *>(&myData);
相关文章:
- 将数组的地址分配给变量并删除
- 将地址分配给本地指针后,公共对象的变量将消失
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 如果 const 不分配内存,为什么我可以获取 const 的地址?
- 当我在 C++ 中将派生类的指针分配给指针时,地址会更改
- LLVM 传递以在特定地址分配内存
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 给定特定内存地址的数组的动态内存分配
- 堆栈分配的类类型.为什么两个 ID 实例的地址相同?
- 获取指针的地址会为其分配一个值
- 任务管理器 - C/C++ 应用程序 - 分配的地址空间与已用内存
- 如何按顺序或在指定的地址分配内存?
- 我可以直接为指针分配地址吗?如果是,如何做到这一点
- 是否可以在运行时为宏分配地址
- 为迭代器分配地址
- 如何查找继承类的分配地址
- 如何在 c++ 中为 boost::shared_ptr 分配地址
- 为指针分配地址
- 使用 'memcpy()' 为指针分配地址