对齐外部常量(gcc)

时间:2010-04-25 12:07:04

标签: c++ gcc alignment

我想让一些静态常量全局可见。我很熟悉如何用C ++做到这一点。问题是这些常数需要与某些奇异边界对齐。我是否必须在extern声明中指定对齐方式?我正在使用GCC4.5

在* .cpp文件中

static const constant_t constant __attribute__((aligned(64))) = {blah,blah,blah};

在* .h文件中

//Which one is correct?
extern const constant_t constant;
extern const constant_t constant __attribute__((aligned(64)));

1 个答案:

答案 0 :(得分:3)

首先,看起来你正试图在C文件中声明它是静态的,这是旧的C语言内部(文件)链接。这与您实现全球化的目标不一致。

鉴于静态被删除,你应该只需要C文件中的属性:extern声明有效地说“我想使用这个名字,当你最终找到它的地址时,在这里替换它”。换句话说,一旦在C文件的定义点分配地址,您的extern将象征性地指向同一地址。