greta在vc express 2008下编译失败

支持vc6和vs.net。在2008下产生C2923。
似乎是原有hetero_stack::stack_node::header结构现在不能看作类型了。

将原有code

struct stack_node
{
struct header
{
stack_node * m_back;
stack_node * m_next;
byte_t * m_current; // ptr into m_mem. alloc from here
byte_t * m_end; // ptr to last+1 byte_t in m_mem
};

union
{
header m_head;
byte_t m_align[ aligned_sizeof<header>::no_rtti ];
};

// This is the buffer into which values will be pushed and popped.
// It is guaranteed to meet the AlignmentT requirements because of
// the union above.
byte_t m_mem[1];

size_t size() const // throw()
{
return static_cast<size_t>( m_head.m_end - m_mem );
}
};

改为

struct stack_node_header;

struct stack_node
{
union
{
stack_node_header m_head;
byte_t m_align[ aligned_sizeof<stack_node_header>::no_rtti ];
};

// This is the buffer into which values will be pushed and popped.
// It is guaranteed to meet the AlignmentT requirements because of
// the union above.
byte_t m_mem[1];

size_t size() const // throw()
{
return static_cast<size_t>( m_head.m_end - m_mem );
}
};

struct stack_node_header
{
stack_node * m_back;
stack_node * m_next;
byte_t * m_current; // ptr into m_mem. alloc from here
byte_t * m_end; // ptr to last+1 byte_t in m_mem
};

并将引用:
byte_t      m_buf[ aligned_sizeof<stack_node::header>::no_rtti + StaticBlockSizeT ];

改为:
byte_t      m_buf[ aligned_sizeof<stack_node_header>::no_rtti + StaticBlockSizeT ];

编译通过。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值