声明:我下面的内容是使用Lion系统+Xcode4.2环境下做的,如果你是其他的系统和Xcode会有所不同。
很多时候,我们必须自己动手写程序,甚至是抄程序才能学好一门技术。下面我以一个opengl程序为例来讲述xcode4.2中更严格的语法检查
打开xcode,新建一个项目。选择Mac OS X下面的application,选择Command Line Tool
选择next,然后输入工程的名字,选择c语言
缺省生成的代码如下:
#include
<stdio.h>
int main (int argc,
const char * argv[])
{
// insert code here...
printf("Hello, World!\n");
return 0;
}
我们加入一些简单的代码,代码就不解释了,在前面的文章中有提到
#include
<stdio.h>
#include
<GLUT/GLUT.h>
void DisplayF()
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
void setupRC()
{
glClearColor(0.1, 1.0, 1.0, 1.0);
}
int main (int argc,
const char * argv[])
{
// insert code here...
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutCreateWindow("test");
glutDisplayFunc(DisplayF);
setupRC();
glutMainLoop();
return 0;
}
上面的代码在编译的时候有三个警告和8个链接错误。我们需要先解决链接错误。这些链接错误是由于我们没有加入链接库。如下图
加入OpenGL.framework和GLUT.framework。
再次编译发现程序可以运行了,但是有三个警告。很多程序员习惯忽略警告,这是一个很不好的习惯,有些时候,警告可能是一个严重的会在运行的时候引起问题的错误,即使只是普通的警告,我们也应该消灭它。做为一个专业的程序员,我们必须养成这样的好习惯。
我们先看看这三个警告是什么
No previous prototype for function 'DisplayF'
No previous prototype for function 'setupRC'
Passing 'const char **' to parameter of type 'char **' discards qualifiers in nested pointer types
可以看出前两个警告是一样的,就是没有找到函数的原型声明,第三个是因为参数的修饰符引起的,第三个最好改,只需要把
int main (int argc,
const char * argv[])
改为:
int main (int argc,
char * argv[])
前两个我们需要加入一个头文件,比如func.h,然后放入这两个函数的声明,
#ifndef tgl0002_func_h
#define tgl0002_func_h
void DisplayF();
void setupRC();
#endif
然后在main.c中引入这个头文件,但是我们会发现还是有两个警告。经过试验后,问题在于:两个函数都没有参数,习惯性的在参数列表的地方什么都不写,现在在四个地方都加入void既可。这就是xcode4.2更严格的语法检查的一部分。最后形成的代码如下:
func.h
#ifndef tgl0002_func_h
#define tgl0002_func_h
void DisplayF(void);
void setupRC(void);
#endif
main.c
#include
<stdio.h>
#include
<GLUT/GLUT.h>
#include
"func.h"
void DisplayF(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
void setupRC(void)
{
glClearColor(0.1, 1.0, 1.0, 1.0);
}
int main (int argc,
char * argv[])
{
// insert code here...
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutCreateWindow("test");
glutDisplayFunc(DisplayF);
setupRC();
glutMainLoop();
return 0;
}
现在程序正常工作了,并且源代码中没有一个警告。
分享到:
相关推荐
xcode 4.2 and iOS5 sdk torrent 文件
1、根据《XCode 4.2 免证书调试之生成本机证书.rtf》制作代码签名证书 2、把“Info.plist”拷贝到“/Developer/Platforms/iPhoneOS.platform/”目录下,把原来的文件重命名 3、把“iPhoneOS Build System Support...
最新XCODE4.2英文书籍,有XCODE4的使用教程。
xcode4.2 ios5sdk snowleopard
Snow Leopard 上最后一个版本的xcode 网络上已经没有其他可下载的资源点 xcode_4.2_and_ios_5_sdk_for_snow_leopard.dmg xcode_4.2_and_ios_5_sdk_for_lion.dmg md5:4e0efebe696d31b46ab4b117015515a5
OpenGL ES 从零开始系列教程的工程模板,XCode4.2,路径为/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application/
Xcode4.2教程(斯坦福大学iOS开发教程3_Walkthrough iOS 5.pdf) 适用于4.2以上版本的Xcode
呵呵,不用多解释,有需要的自己下吧,这个是种子,用什么下载?当然迅雷啦
xcode 4.2 and IOS 5.0 DP
从零开始学习OpenGL ES系列教程的工程模板,XCode4.2,路径为/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application/
snow xcode 4.2 mac,亲测,速度不错
XCode4.2中使用Empty Application模板替代旧的Window Based
XCode 4.2 & iOS5 SDK
Xcode 快速注释插件VVDocumenter-Xcode-master 三个///快速注释 下载解压后 用Xcode打开工程文件,Command + B进行编译,再重启Xcode即可
Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
iOS5开发基础教程 最新版本 xcode4.2,让你不再为新老版本界面而烦恼,目前只能找到英文版本了。
网络上没有一篇文章是如此详细描述了安装MAC虚拟机到Delphi XE进行IOS开发的 MAC虚拟机安装 ----> MAC系统升级 ---->VMWare Tools安装 ---->获取证书 ---->加载开发者设备 ---->下载安装XCode ---->Delphi XE...
利用这个torrent文件,使用迅雷进行下载xcode_4.2_and_ios_5_sdk_for_snow_leopard.dmg , 在虚拟机的苹果电脑中进行安装xcode
Apple Xcode 4.2 下载地址(非官方)
Xcode 模拟器手动下载地址,内容只包含从iOS 8 - iOS 12 之间的各个小版本。