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

问题描述

文件操作,我将文件操作部分的代码放在,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

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

Java的文件操作--2(Zip文件释放)

  在java中专门有一个对zip文件操作的包(java.util.zip),对zip文件操作挺方便的,上次说写一个zip文件释放程序,花了一天时间终于写完了,起先想起来挺简单的:原理就是将zip文件中的文件夹和文件通过ZipInputStream和ZipEntry类一一得出,然后分别再对应目录下创建文件和文件夹.可是实现起来就不是那么回事了,其中有好多细节问题都不好解决,其中在调用ZipInputStream中的getNextEntry方法时如果zip文件中包含中文路径名或者文件名就会抛出异常

Java实现DOM文档操作和XML文件互相转换

dom|xml|转换 本文简要描述了DOM的概念和内部逻辑结构,实例讲述DOM文档操作和XML文件互相转换的java实现过程. 1. DOM简介 目前,W3C已于2000年11月13日推出了规范DOM level 2.文档对象模型(DOM)是HTML和XML文档的编程接口规范,它与平台和语言是无关的,因而可以用各种语言在各种平台上实现.该模型定义了THML和XML文件在内存中的逻辑结构(即为文档),提供了访问.存取THML和XML文件的方法.利用DOM规范,可以实现DOM 文档和XML之间的相互

JSP文件操作例程 - 读文件

js <%--作者:何志强[hhzqq@21cn.com]日期:2000-08-07版本:1.0功能:JSP文件操作例程 - 读文件--%> <%@ page contentType="text/html;charset=gb2312"%> <%//变量声明java.lang.String strFileName;     //文件名java.io.File objFile;             //文件对象java.io.FileReader obj

DOM文档操作和XML文件互相转换的java实现 (转贴)

dom|xml|转换 DOM文档操作和XML文件互相转换的java实现 [ 作者: 郭洪锋   添加时间: 2001-10-19 8:16:09 ] 郭洪锋 (ghf_email@sohu.com) 简介:该文简要描述了DOM的概念和内部逻辑结构,给出了DOM文档操作和XML文件互相转换的java实现过程.1. DOM简介 目前,W3C已于2000年11月13日推出了规范DOM level 2.文档对象模型(DOM)是HTML和XML文档的编程接口规范,它与平台和语言是无关的,因而可以用各种语言

php中使用PHPExcel操作excel(xls)文件

  PHPExcel是php的一个插件,它可以实现读取excel文件也就是xls文件了,下面我们就来看一个PHPExcel操作excel(xls)文件例子,希望能帮助到各位. 读取中文的xls.csv文件会有问题,网上找了下资料,发现PHPExcel类库好用 1.读取xls文件内容  代码如下   <?php     //向xls文件写入内容     error_reporting(E_ALL);     ini_set('display_errors', TRUE);         incl

使用qt5操作xml文件,删除xml文件中的节点和修改xml文件节点的数据值

问题描述 使用qt5操作xml文件,删除xml文件中的节点和修改xml文件节点的数据值 使用qt5操作xml文件,删除xml文件中的节点和修改xml文件中节点的数据值. 那位大神知道,如果有代码就更好了. 谢谢 解决方案 QT XML文件 修改节点修改XML文件的节点属性值

office-java 操作ppt word文件,复制其中的一部分

问题描述 java 操作ppt word文件,复制其中的一部分 急求java怎么复制ppt word文件!!不要全部复制,而只抽取其中的一部分,比如说文件一共2M,只需要提取前1M..用字节流的方式试了不行,生成的文件office表示文件已损坏... 解决方案 POI 是apache的处理类似问题的开源项目,试一下吧.http://poi.apache.org/

bat脚本自动扫描制定文件夹下shp文件,并导入数据库,然后执行空间操作

GIS地图功能是现在越来越多项目的标配,但是商业的的arcgis软件太贵,开源的又有各种复杂的配置,如何简化这种配置呢,那就是使用脚本扫描知道文件夹下的文件,把扫描到的shp数据导入指定的空间数据库,然后对数据库中的不同表格执行不同的空间操作. @echo off echo pms map data input set PSQLPATH="C:\Program Files (x86)\PostgreSQL\9.2\bin" echo %PSQLPATH% set filePath=&q

文件类型,c语言文件读写,文件缓冲,文件打开方式,文件操作函数

文件类型分为:流文件和设备文件,设备文件比如:VGA接口,串口,usb口,网口,串口,这些接口都被操作系统抽象成为了文件. 当我们写程序的时候默认已经帮我们打开了三个文件 分别是: stdin:标准输入,stdout:标准输出,stderr:标准出错,scanf实际上接收的是标准输入的数据,这时候的标准输入就是我们的键盘.              有四种方式清空缓冲区:      A.加'\n';            B.程序正常退出;      C.通过fflush(stdout)也可以清