c - 为 C 类型添加额外的标签

标签 c gcc c-preprocessor

这是我的问题:我正在使用非标准 ANSI C(使用标准 GCC 编译的 ARM 修改后的 r-tems),我想在 前面添加一个额外的标签C 类型维护类型属性并添加一些“东西”。最终结果将是这样的:

REL char *p;

这仍然是指向 char 的指针,编译器必须这样处理,但是现在 REL 标签将定义 p 是也是一个可靠的指针。

HP int a;

相同,但现在 HP 标记会将此 int 定义为高性能 int

我必须更改/修改预处理器?如何?

PS:这不是很重要,但是根据我的项目的具体情况,我不能使用简单的 #define 因为 RELHP 标签将附加到直接绑定(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/

相关文章:

c++ - 有助于最大限度地减少 C++ 程序中宏使用的工具

c++ - 读取存储在 double 中的 8 字节字段的 4 个字节

c - 显示存储在 window dc 中的位图

C - 来自套接字的数据不一致

C 函数仅定义返回不是预期的?

gcc - 为什么要在项目中使用#include_next?

c - fork 二叉树, fork 功能问题

c++ - 如何通过 OSX 在 Matlab 中更改 C++ 编译器

linux - g++ 默认 header 包含列表

c++ - C#define 嵌套在 #ifdef 中