2 xy707707 xy707707 于 2015.05.27 11:05 提问

文件操作,我将文件操作部分的代码放在,myDisplay函数内部就没有问题了。。这是为什么

F:\WORK\opengl test temp\dashBoard.cpp(8) : error C2501: 'fp' : missing storage-class or type specifiers
F:\WORK\opengl test temp\dashBoard.cpp(8) : error C2040: 'fp' : 'int' differs in levels of indirection from 'struct _iobuf *'
F:\WORK\opengl test temp\dashBoard.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:\WORK\opengl test temp\dashBoard.cpp(10) : error C2143: syntax error : missing ';' before 'if'
F:\WORK\opengl test temp\dashBoard.cpp(14) : error C2143: syntax error : missing ';' before 'if'
F:\WORK\opengl test temp\dashBoard.cpp(18) : error C2143: syntax error : missing ';' before 'if'
F:\WORK\opengl test temp\dashBoard.cpp(22) : error C2501: 'fclose' : missing storage-class or type specifiers
F:\WORK\opengl test temp\dashBoard.cpp(22) : error C2373: 'fclose' : redefinition; different type modifiers
d:\program files\microsoft visual studio\vc98\include\stdio.h(285) : see declaration of 'fclose'
F:\WORK\opengl test temp\dashBoard.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;

}

4个回答

q3733353520
q3733353520   2015.05.27 13:37
已采纳

只有编译部分的代码才可以放在函数外

caozhy
caozhy   Ds   Rxr 2015.05.27 11:12

那当然,代码必须写在函数内,怎么能直接写在源代码文件中呢。

caozhy
caozhy   Ds   Rxr 2015.05.27 11:13

直接写在源代码中那个是变量声明,也可以带上初始化,但是绝对不可能有if之类的东西。
难道你完全不懂C语言?

DZL_ACE
DZL_ACE   2015.05.27 12:57

代码在函数内执行,调用函数就可以

Csdn user default icon
上传中...
上传图片
插入图片