1

我针对 VES2008 编译了 Greta,它报告

error C2332: 'class' : missing tag name                                           
error C3306: 'regex::detail::<unnamed-tag>': unnamed class template is not allowed
error C2143: syntax error : missing ';' before '__builtin_alignof'                
error C2059: syntax error : '__builtin_alignof'                                   
error C2143: syntax error : missing ';' before '{'                                
error C2447: '{' : missing function header (old-style formal list?)               

相关源代码片段:

template< typename T >
class alignof
{
    struct helper
    {
        helper();
        char    m_c;
        T       m_t;
    };
public:
    enum { value = sizeof(helper)-sizeof(T) < sizeof(T) ? sizeof(helper)-sizeof(T) : sizeof(T) };
};

预编译后,

template< typename T >
class __alignof
{
    struct helper
    {
        helper();
        char    m_c;
        T       m_t;
    };
public:
    enum { value = sizeof(helper)-sizeof(T) < sizeof(T) ? sizeof(helper)-sizeof(T) : sizeof(T) };
};

谷歌搜索后我没有找到答案。是什么原因造成的以及如何解决?

4

1 回答 1

0

虽然alignof在 VS2008 中似乎不是保留字,但它是如此相似,_alignof以至于它可能会混淆问题。

尝试将您的班级名称更改为不同的名称。

于 2013-04-09T05:03:20.923 回答