【发布时间】:2014-04-26 01:46:46
【问题描述】:
我们有多个 16 字节对齐的结构。 在以前版本的 GCC 中,一切正常。 由于我们升级到 GCC 4.8.2(之前我们使用 4.6),我们收到了一堆关于这些结构的警告。
一个示例结构为:
typedef struct _STRUCT
{
_STRUCT(): a(0),
b(0) {};
uint32_t a;
uint32_t b;
} STRUCT __attribute__((aligned (16)));
编译此代码会在使用此 strcut 时引发以下警告:
warning: ignoring attributes on template argument '_STRUCT' [enabled by default]
我真的不明白,这个警告试图告诉我什么,搜索谷歌也没有帮助。
【问题讨论】:
-
".. 在使用此 strcut 的位置出现以下警告":您如何使用它?
-
_STRUCT是如何定义的? -
当我在
std::list或std::map中使用结构时,会出现警告,例如std::list<STRUCT>& aList; -
从技术上讲,您不应该使用带有前导下划线的类型。那是一个保留的命名空间。如果您要让 ctor 成为定义的一部分,为什么不直接使用
class STRUCT?
标签: c++ gcc struct g++ alignment