开发中的过剩C++错误"redeclaration of C++ built-in type `short'"
Glut in Dev C++ error "redeclaration of C++ built-in type `short'"
我有这个简单的三角形绘图代码,它产生了一个错误"重新声明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
相关文章:
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 控制到达非空函数clang(-Wreturn-type)的末尾
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 将系数存储在头文件的数组中("does not name a type"错误)
- 尝试打开 ifstream 时出现"Incomplete type"错误
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 在"结构提升::enable_if<提升::is_pod<T>,无效>"中没有名为"type"的类型
- "Missing type specifier - int assumed"无法通过向主函数添加"return 0"来解决
- OpenCV CV_16F type
- C++ "错误:在'类 std::result_of< ... >"中没有名为'type'的类型"
- 将内存分配返回值强制转换为 TYPE 数组
- C++ 一个lambda浅拷贝const Type&如果它被赋予一个命名捕获,如[copy=val](){}?
- reference_wrapper导致"incomplete type is not allowed"
- 继承类时"invalid use of incomplete type ‘class tree_node_t’"
- 由于"error C4430: missing type specifier - int assumed. Note: C++ does not support default-int",我现在无法编
- 如何解决"'mutex' in namespace 'std' does not name a type"?
- 结构中的错误"Incomplete type is not allowed"