我是C ++中GLUT的初学者。我使用Dev C ++作为我的IDE。我有这个简单的三角形绘图代码,它产生一个错误“重新声明C ++内置类型短”。但是当我在#include<iostream.h>
之前放置#include<glut.h>
时,它会编译并运行。
任何人都可以解释背后的逻辑吗?
#include<glut.h>
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char **argv) {
// init GLUT and create Window
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("My first program");
// register callbacks
glutDisplayFunc(renderScene);
// enter GLUT event processing cycle
glutMainLoop();
return 1;
}
答案 0 :(得分:3)
很难说没有看到你的确切glut.h和库版本,但我看到了glut.h的第45行:
/* XXX This is from Win32's <ctype.h> */
# ifndef _WCHAR_T_DEFINED
typedef unsigned short wchar_t;
# define _WCHAR_T_DEFINED
# endif
如果已定义wchar_t
(例如short
),但_WCHAR_T_DEFINED
宏未定义,则该行将被视为:
typedef unsigned short short;
这是内置类型的重新声明。 <iostream>
(不要使用.h顺便说一句,它不再用于每个标准)是添加定义使得typedef不被执行,或者如果它是一个宏而不定义wchar_t
,那么typedef是合法的。
答案 1 :(得分:0)
在我的赛车项目时我遇到error redeclaration of c++ built-in type 'wchar_t'
。我在谷歌搜索,但没有找到任何解决方案来解决我的问题: - (
但后来,我通过包含&#34; windows.h&#34;解决了这个问题。我自己: - )
#include<windows.h>
#include<bits/stdc++.h>
#include<GL/glut.h>
必须在顶部添加 #include<windows.h>
。如果在glut.h
下添加,则会出现错误。
#include<bits/stdc++.h>
刚刚添加了安全性:-p
使用#include<GL/glut.h>
或#include<glut.h>
,具体取决于glut.h
所在的文件夹。
答案 2 :(得分:0)
我遇到了同样的问题,在“glut.h”文件中将 wchar_t 变量名更改为 wchar_tt 并且它工作正常。
@Injectable({
providedIn: 'root'
})
export class ShareDataService {
constructor(private router: Router) {
}
private content = new BehaviorSubject<any>([]);
setQuery(v) {
this.content.next(v);
}
getQuery(): Observable<any> {
return this.content.value;
}
passQuery(qp: {}) {
this.router.events.subscribe((event) => {
if (event instanceof NavigationStart) {
this.setQuery(qp);
}
});
}
}