0
我有以下文件有點問題:骨料「軌跡球軌跡球具有不完整的類型,不能被定義
我對這個文件軌跡球結構:
#ifndef ARCBALL_H_
#define ARCBALL_H_
#include "ex1.h"
...
extern struct arcball{
float radius;
int x,y;
}arcball;
...
#endif /* ARCBALL_H_ */
和我有以下ex1.h文件,其中包含的arcball.h文件:
#ifndef __EX1_H__
#define __EX1_H__
////////////////////////////
// Project Includes
////////////////////////////
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include "arcball.h"
////////////////////////////
// OpenMesh Includes
////////////////////////////
#include "OpenMesh/Core/IO/MeshIO.hh"
#include "OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh"
////////////////////////////
// GL Includes
////////////////////////////
#include "GLee.h"
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
...
struct arcball arcball;
#endif
我必須包括ex1.h頭由於ex1.h保持包括用於過剩功能在I 使用arcball.cpp文件。 我必須使用arcball.h頭文件才能使用該函數,並在該文件中定義結構 。
我得到的錯誤是:
In file included from arcball.h:11:0,
from arcball.cpp:8:
ex1.h:120:16: error: aggregate ‘arcball arcball’ has incomplete type and cannot be defined
make: *** [ex1] Error 1
我不明白爲什麼它是一個不完整的類型,因爲我包括arcball.h文件
這是一個相互包容問題或結構定義/用法問題? 如何解決?
謝謝!
我不認爲聲明一個與其類型名稱相同的變量是一個非常好的主意。此外,如果這是C++而不是C,請不要將它標記爲C. – 2012-11-17 17:57:19
它是一個全局變量,它不是typedef,所以使用arcball將簡單地調用arcball變量......在這裏沒有明確的C++用法,這可以像ac代碼一樣使用和編譯。 – Itzik984
好,但請注意,只有一個C或C++標記應該存在 - 它們不是相同的語言,甚至不可互換。 – 2012-11-17 18:00:27