使常量数组对不同的源文件可见

问题描述 投票:0回答:1

是否可以使常量数组的内容在多个其他源文件中可见,以便编译器可以优化对数组的访问。
我有一个数组

const int myTable[10];
,在多个源文件中,我希望该表的内容对其他源文件可见,以便优化访问。例如下面的代码:

if (myTable[1] == 1)
{
    foo();
}
else if (myTable[2] == 5)
{
    bar();
}
else
{
    baz();
}
如果源文件知道

myTable

 的内容,
可以完全优化分支。

我知道几个解决方案,但没有一个令人满意:

  1. 使用 LTO(在 GCC 上)- 在不支持 LTO 的嵌入式设备上
  2. 在头文件中定义
    myTable
    ,然后将其包含在源文件中 - 我只想要这个表的单个定义,因为它很大
c gcc global-variables
1个回答
0
投票

在给定的限制下,一种选择是将需要此类优化的函数收集在与表相同的编译单元中。例如:

const int myTable[10] = ...;

void doFooBar(void)
{
    if (myTable[1] == 1)
    {
        foo();
    }
    else if (myTable[2] == 5)
    {
        bar();
    }
    else
    {
        baz();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.