gcc __attribute __((selectany))是否可以替代Linux?

0xA*_*xAF 3 c linux linker gcc multiple-definition-error

我想知道__attribute__((selectany))在Linux中是否还有替代方法?

我想定义这样的东西:

char * a[] = { "qwe", "zxc" };
Run Code Online (Sandbox Code Playgroud)

在头文件中,并将其包含在许多将链接在一起的.c文件中。因此,链接器将看到一个以上的“ a”定义,因此将不会链接。我已经读过这个属性(selectany),它将仅使用“ a”的第一个定义,不幸的是,它仅用于ms窗口。所以问题是:linux中有替代方法吗?

编辑:实际的问题是:有没有一种方法可以指示链接器仅使用第一个看到的定义,而忽略其他任何可能的定义,即使它们不同?我知道有很多方法可以定义我的数据,我不是在寻找解决方案来定义我的数据,相反,我想知道是否有一种方法可以有多个定义并使链接器与第一个看到的一样工作。 ..

Woj*_*gda 5

我认为您正在寻找“弱” gcc属性。