首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个关于gcc预编译头的有关问题(疑似gcc的bug?)

2013-08-09 
请教一个关于gcc预编译头的问题(疑似gcc的bug?)下面的代码,作为pch编译:g++ -Wall -fexceptions -g -msse4

请教一个关于gcc预编译头的问题(疑似gcc的bug?)
下面的代码,作为pch编译:

g++ -Wall -fexceptions -g -msse4.1 -Winvalid-pch -include "pch.h"  -c pch.h -o pch.h.gch

#include <cstddef>
#include <X11/X.h>
#include <xmmintrin.h>
#include <emmintrin.h>
#include <smmintrin.h>

#ifndef __FooClass__
#define __FooClass__

class FooClass
{
public:
    union
    {
        struct
        {
            float x,y,z,w;
        };
        __m128 v;
    };

    FooClass( void )
    {
    }

    FooClass( const __m128 _v )
    : v( _v )
    {
    }

    FooClass( const FooClass& rhs )
    : v( rhs.v )
    {
    }

    FooClass operator -( void ) const;

} __attribute__( (aligned(16)) );

inline FooClass FooClass::operator -( void ) const
{
    return FooClass();
}

#endif


提示错误:
./pch.h:40:17: error: prototype for ‘FooClass FooClass::operator-() const’ does not match any in class ‘FooClass’
./pch.h:36:14: error: candidate is: FooClass FooClass::operator-() const

查了一下午只得到这样的结论:去掉const或者去掉拷贝构造函数则可以正常编译通过……

不知道有谁遇到同样的问题没有?还是我上面的代码有误?
[解决办法]
 这样试试吧! 内联函数一般都是在类中申明的时候就定义的

class FooClass
{
public:
    union
    {
        struct


        {
            float x,y,z,w;
        };
        __m128 v;
    };
 
    FooClass( void )
    {
    }
 
    FooClass( const __m128 _v )
    : v( _v )
    {
    }
 
    FooClass( const FooClass& rhs )
    : v( rhs.v )
    {
    }
    inline FooClass& operator -( void ) const
    {
        return FooClass();
    }
 
} __attribute__( (aligned(16)) );
 


[解决办法]
 

热点排行