手贱的编码错误!!

来源:互联网 发布:fm2017数据库 编辑:程序博客网 时间:2024/04/29 23:51

1、只要是编译器没报错的代码说明编码格式是能识别的。(所以一旦代码可以被编译就不用担心utf-8还是unicode,至于中文问题,要想在代码中VS识别中文debug就切换为utf-8编码格式就可以啦。)

2、鉴于有此认识:下面两段代码是有区别的:

int main(int argc,char* argv[]){glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GL_RGB);glutInitWindowSize(400,150);glutInitWindowPosition(0,0);glutCreateWindow(argv[0]);init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutMainLoop();return 0;}

int main(int argc,char* argv[]){glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowSize(400,150);glutInitWindowPosition(0,0);glutCreateWindow(argv[0]);init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutMainLoop();return 0;}




真是越低级的错误,越难以差别,真要学学倒校的方式debug。所以我把两段不同的代码,用正确的那部分一行一行的从末尾开始校对错误的代码,终于发现这点小错误。然后问题来了,GL_RGB和GLUT_RGB有什么区别?GL_RGB值为:#define GL_RGB   0x1907。但是GLUT_RGB值为0X00。虽然说一开不应该陷入细节,但是不弄清楚下次再犯错了就可以知道问题出在哪。估计这也是C++11出强制枚举类型的问题。这样子真的可以解决C/C++语言原弱枚举类型的编码错误。C11的标准没去了解。


3、遗留问题:多边形填充起点和填充方向没有找到。在第八章会介绍,今晚看看。




0 0
原创粉丝点击