【发布时间】:2011-01-28 09:26:09
【问题描述】:
我想知道在 linux 中是否有 __attribute__((selectany)) 的替代品?
我想定义类似的东西:
char * a[] = { "qwe", "zxc" };
在头文件中,并将其包含在许多将链接在一起的 .c 文件中。 因此链接器将看到多个“a”的定义,因此不会链接。我读过这个属性(selectany),它只使用第一次看到的“a”定义,不幸的是它只适用于ms windows。 所以问题是:在linux中是否有替代方法?
编辑:实际的问题是:有没有办法指示链接器只使用第一次看到的定义而忽略任何其他定义,即使它们不同? 我知道有很多方法可以定义我的数据,我不是在寻找如何定义我的数据的解决方案,而是我想知道是否有一种方法可以有多个定义并使链接器与第一个看到的一起工作。 ..
【问题讨论】:
-
这很有趣,您能分享一下您最终要完成的工作吗?我明白这个问题,我只是在阅读后很好奇。
-
我有一些类型的枚举(例如:STRING、INTEGER、FLOAT 等)。如您所知,类型的值是整数...我需要类型的字符串表示形式,所以这里出现了 char * type_names[] = { [STRING] = "string", ...},但您可以想象我需要在头文件中的枚举器附近进行该定义,因此我将其设为静态 const char * [],并在其周围加上#ifdef INCLUDE_TYPE_NAMES,但我很好奇是否有办法在所描述的(问题中)中完成它方式。
标签: c linux gcc linker multiple-definition-error