当我编译下面的代码:有关__attribute __((__ packed__))的C++编译错误的其他方法是什么?
#include <sys/time.h>
#include <stdio.h>
struct TupleHeader {
timeval tuple_stime; // 34..37
}__attribute__((__packed__));
void set_value(timeval& stime){
}
int main(){
TupleHeader tuple;
set_value(tuple.tuple_stime);
return 0;
}
我g++-3.4.2
和g++-4.8.3
下的错误:
attribute-1.cc: In function `int main()':
attribute-1.cc:13: error: cannot bind packed field `tuple.TupleHeader::tuple_stime' to `timeval&'
我定义后timeval
自己如下,并改变了所有timevals
在上面的代码为timeval2
:
struct timeval2
{
__time_t tv_sec;
__suseconds_t tv_usec;
}__attribute__((__packed__));
e rror消失了,但我不想定义一个已经存在于<bits/time.h>
中的结构。有什么其他方法可以纠正这个错误?非常感谢!
编写不依赖于结构填充(或缺少它)的代码。 – 2014-09-05 00:25:42