这是我的问题:我正在使用非标准 ANSI C(使用标准 GCC 编译的 ARM 修改后的 r-tems),我想在 前面添加一个额外的标签C 类型维护类型属性并添加一些“东西”。最终结果将是这样的:
REL char *p;
这仍然是指向 char
的指针,编译器必须这样处理,但是现在 RE
L 标签将定义 p
是也是一个可靠的指针。
HP int a;
相同,但现在 HP
标记会将此 int
定义为高性能 int
。
我必须更改/修改预处理器?如何?
PS:这不是很重要,但是根据我的项目的具体情况,我不能使用简单的 #define
因为 REL
和 HP
标签将附加到直接绑定(bind)到预处理器的特殊硬件例程。 (这就是前面提到的“东西”)。
最佳答案
使用 __attribute__((section("SECTION")))
属性告诉 GCC 将变量放在特定的部分。然后,使用 linker script以确保将适当的部分映射到内存中的适当位置。例如:
#define REL __attribute__((section("REL")))
#define HP __attribute__((section("HP")))
char *p REL;
int a HP;
我对链接器脚本不是很熟悉,所以弄清楚如何做到这一点对读者来说是一个练习。
关于c - 为 C 类型添加额外的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313399/