开发中的过剩C++错误"redeclaration of C++ built-in type `short'"

Glut in Dev C++ error "redeclaration of C++ built-in type `short'"

本文关键字:C++ type short built-in redeclaration 开发 错误 of      更新时间:2023-10-16

我有这个简单的三角形绘图代码,它产生了一个错误"重新声明c++内置类型short"。但是当我把#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;
}

在没有看到确切的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合法。

我在赛车项目中遇到了error redeclaration of c++ built-in type 'wchar_t'。我在谷歌上搜索了一下,但没有找到任何解决我问题的方法:-(

)

但后来,我自己解决了这个问题,包括"windows.h":-)

#include<windows.h>
#include<bits/stdc++.h>
#include<GL/glut.h>

#include<windows.h>必须添加在顶部。如果在glut.h下添加,则会出现错误。

#include<bits/stdc++.h>仅为安全起见添加:-p

根据glut.h所在的文件夹使用#include<GL/glut.h>#include<glut.h>

我遇到过同样的问题,并将wchar_t变量名称更改为" gt .h"中的wchar_tt文件和它工作正常

#  ifndef _WCHAR_T_DEFINED
typedef unsigned short wchar_tt;
#   define _WCHAR_T_DEFINED
#  endif
# endif