代码之家  ›  专栏  ›  技术社区  ›  user283145

对齐外部常量(gcc)

  •  0
  • user283145  · 技术社区  · 15 年前

    我想使一些静态常量全局可见。我非常熟悉如何在C++中实现这一点。问题是,这些常数需要与一些奇异的边界对齐。是否必须在外部声明中指定对齐方式?我用的是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 回复  |  直到 15 年前
        1
  •  3
  •   Mark B    15 年前

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

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