问题描述
- 文件操作,我将文件操作部分的代码放在,myDisplay函数内部就没有问题了。。这是为什么
-
F:WORKopengl test tempdashBoard.cpp(8) : error C2501: 'fp' : missing storage-class or type specifiers
F:WORKopengl test tempdashBoard.cpp(8) : error C2040: 'fp' : 'int' differs in levels of indirection from 'struct _iobuf *'
F:WORKopengl test tempdashBoard.cpp(8) : error C2440: 'initializing' : cannot convert from 'struct _iobuf *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
F:WORKopengl test tempdashBoard.cpp(10) : error C2143: syntax error : missing ';' before 'if'
F:WORKopengl test tempdashBoard.cpp(14) : error C2143: syntax error : missing ';' before 'if'
F:WORKopengl test tempdashBoard.cpp(18) : error C2143: syntax error : missing ';' before 'if'
F:WORKopengl test tempdashBoard.cpp(22) : error C2501: 'fclose' : missing storage-class or type specifiers
F:WORKopengl test tempdashBoard.cpp(22) : error C2373: 'fclose' : redefinition; different type modifiers
d:program filesmicrosoft visual studiovc98includestdio.h(285) : see declaration of 'fclose'
F:WORKopengl test tempdashBoard.cpp(22) : error C2440: 'initializing' : cannot convert from 'struct _iobuf *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
执行 cl.exe 时出错.instrument board.exe - 1 error(s), 0 warning(s)
#include
#include
#include
static GLubyte Mask[128];FILE *fp; fp = fopen("mask.bmp", "rb"); if( !fp ) exit(0); if( fseek(fp, -(int)sizeof(Mask), SEEK_END) ) exit(0); if( !fread(Mask, sizeof(Mask), 1, fp) ) exit(0); fclose(fp);
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_POLYGON_STIPPLE); glPolygonStipple(Mask); glRectf(-0.5f, -0.5f, 0.0f, 0.0f); // 在左下方绘制一个有镂空效果的正方形 glDisable(GL_POLYGON_STIPPLE); glRectf(0.0f, 0.0f, 0.5f, 0.5f); // 在右上方绘制一个无镂空效果的正方形 glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); glutCreateWindow("第一个OpenGL程序"); glutDisplayFunc(&myDisplay); glutMainLoop(); return 0;
}
解决方案
只有编译部分的代码才可以放在函数外
解决方案二:
那当然,代码必须写在函数内,怎么能直接写在源代码文件中呢。
解决方案三:
直接写在源代码中那个是变量声明,也可以带上初始化,但是绝对不可能有if之类的东西。
难道你完全不懂C语言?
解决方案四:
代码在函数内执行,调用函数就可以
时间: 2024-08-24 08:18:21