有这个错误。怎么了?感谢您的回复
错误36错误C2011:' _D3DVECTOR' :' struct'类型redefinition \ Renderer.h
错误37错误C2504:' _D3DVECTOR' :基类undefined \ Renderer.h
这是Render.h
#include <D3D11.h>
#include <d3dx11.h>
#include <DXErr.h>
#include <D3DX11async.h>
#include <D3Dcompiler.h>
#include <D3dx11effect.h>
#include <D3D11Shader.h>
#include "FW1FontWrapper.h"
#ifndef _D3DVECTOR
ERROR here> typedef struct _D3DVECTOR {
float x;
float y;
float z;
} D3DVECTOR;
#endif
#ifndef D3DXVECTOR3
typedef struct D3DXVECTOR3 : public D3DVECTOR
ERROR here> {
public:
D3DXVECTOR3() {};
D3DXVECTOR3(CONST FLOAT *);
D3DXVECTOR3(CONST D3DVECTOR&);
D3DXVECTOR3(CONST D3DXFLOAT16 *);
D3DXVECTOR3(FLOAT x, FLOAT y, FLOAT z);
// casting
operator FLOAT* ();
operator CONST FLOAT* () const;
// assignment operators
D3DXVECTOR3& operator += (CONST D3DXVECTOR3&);
D3DXVECTOR3& operator -= (CONST D3DXVECTOR3&);
D3DXVECTOR3& operator *= (FLOAT);
D3DXVECTOR3& operator /= (FLOAT);
// unary operators
D3DXVECTOR3 operator + () const;
D3DXVECTOR3 operator - () const;
// binary operators
D3DXVECTOR3 operator + (CONST D3DXVECTOR3&) const;
D3DXVECTOR3 operator - (CONST D3DXVECTOR3&) const;
D3DXVECTOR3 operator * (FLOAT) const;
D3DXVECTOR3 operator / (FLOAT) const;
friend D3DXVECTOR3 operator * (FLOAT, CONST struct D3DXVECTOR3&);
BOOL operator == (CONST D3DXVECTOR3&) const;
BOOL operator != (CONST D3DXVECTOR3&) const;
} D3DXVECTOR3, *LPD3DXVECTOR3;
#endif
答案 0 :(得分:1)
这里的问题是#ifndef
不能用于检测结构标签或typedef。 #ifndef
仅用于确定是否存在宏(使用#define
声明)。
例如,以下代码将生成两个错误,“hello”和“world”。
typedef struct _D3DVECTOR {
float x;
float y;
float z;
} D3DVECTOR;
#ifndef _D3DVECTOR
#error hello
#endif
#ifndef D3DVECTOR
#error world
#endif