gpt4 book ai didi

c - 将全局常量数组放入 `.rodata` 部分

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:25 26 4
gpt4 key购买 nike

目标是将大量常量数据放入 .rodata 部分,以允许从其他翻译单元访问它。据我所知,如果声明为 static const,GCC 会将数据放入只读部分。但是这样就不可能在其他文件中声明为extern。对于非静态数组,我会做类似的事情:data.c 将包含:

const int data[] = {0,1,2,....}

data.h将包含:

extern const int data[];

它将允许包括 data.h 在内的任何文件“查看”此数据。但是人们会怎么做呢:

static const int data[] = {0,1,2,....}

当然,我可以使用 __attribute __((section("name"))) 明确定义目标部分,但我更愿意避免这种重炮使用。那么,执行所需操作的最便携和最合适的方法是什么?

最佳答案

没有可移植的方法将数据放入 .rodata 部分,因为即使这样的部分的存在也依赖于实现。

话虽如此,您可以考虑这样解决您的问题:

extern const int * const data;

/* ... */

static const int rodata[] = {0,1,2,....};
const int * const data = rodata;

关于c - 将全局常量数组放入 `.rodata` 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com