【发布时间】:2021-11-25 07:49:08
【问题描述】:
我正在使用我有此定义的代码示例:
#define PLACE_IN_SECTION( __x__ ) __attribute__((section (__x__)))
全部代码。
例如
//file1.cpp
PLACE_IN_SECTION("A") static int a1;
//file2.cpp
PLACE_IN_SECTION("A") static int a2;
我找不到有关变量放置在特定部分中的顺序的信息。 Keil 只是告诉我将所有内容放在一个结构中以控制地址。 但是我仍然想知道每个编译器是否有关于顺序的任何规则。
所以基本上问题是谁会是第一个,为什么?
同时使用 gcc 和 arm 编译器 (v6)
编辑: 这些变量与另一个 CPU 分片,它们获得的地址对系统很重要。
【问题讨论】:
-
我提出了一个非常愚蠢的问题......对不起......但是你到底为什么要关心订单呢?如果您有特定的订单(出于未知原因),请将它们放在单独的部分并通过链接器脚本进行排序
-
变量的地址在该代码中很重要,它与另一个 CPU 共享,我无法控制。
-
the order the variables are placed in a specific section未指定。它们按链接器希望它们的任何顺序放置。The address of the variables然后将每个变量放在自己的部分中。 -
如果你想确保精确的顺序,要么将变量放在不同的部分并在链接描述文件中设置地址,要么将它们全部放在一个部分和一个文件中的顺序中。否则你只是在玩特定版本的工具链链接器的猜谜游戏。