声明:我下面的内容是使用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;
}
现在程序正常工作了,并且源代码中没有一个警告。
分享到:
相关推荐
- **第二章:安抚图腾神** - 介绍Xcode4.2的安装和配置,以及如何创建第一个iOS项目。 - **第三章:处理基本交互** - 探讨用户界面元素的基本交互方式,包括按钮点击、滑动等操作。 - **第四章:更多的用户界面乐趣*...
- 创建第一个iOS应用。 - 界面布局与基本控件的使用。 3. **处理基本交互**(第3章) - **章节概要**:讲解如何实现简单的用户交互,如按钮点击响应等。 - **重点内容**: - 用户事件处理机制。 - 触摸事件...
第1章 欢迎来到iPhone的世界 1.1 关于本书 1.2 必要条件 1.3 必备知识 1.4 编写iPhone应用程序有何不同 1.4.1 只有一个正在运行的应用程序 1.4.2 只有一个窗口 1.4.3 受限访问 1.4.4 有限的响应时间...
- **创建第一个游戏项目**:通过Cocos Creator CLI快速创建项目模板。 - **添加精灵与背景图**:利用sprite类加载并显示游戏资源。 - **实现简单动画**:通过action类实现角色移动、旋转等动画效果。 - **编写事件...
- **增长趋势**:随着iOS平台的发展,越来越多的人在日常生活中依赖移动应用软件,这使得iOS成为一个极具吸引力的开发平台。 #### 二、iOS开发环境搭建 - **账号注册**:首先需要在苹果官方网站上注册开发者账号。 ...
第1章 欢迎来到iPhone的世界 1 1.1 关于本书 1 1.2 必要条件 1 1.3 必备知识 3 1.4 编写iPhone应用程序有何不同 4 1.4.1 只有一个正在运行的应用程序 4 1.4.2 只有一个窗口 4 1.4.3 受限访问 5 1.4.4 有限的响应时间...
第1章 Android平台上的C++入门 1 1.1 Microsoft Windows 1 1.1.1 在Windows平台上下载并安装JDK开发包 2 1.1.2 在Windows平台上下载并安装Apache ANT 5 1.1.3 在Windows平台上下载并安装Android SDK 7 1.1.4 在...
第2章 编写第一个Xamarin.Forms应用程序 42 2.1 首次启动Visual Studio 2015 42 2.2 更新Xamarin 44 2.2.1 更新Windows版的Xamarin开发工具 44 2.2.2 更新OS X版的Xamarin开发工具Xamarin.iOS 45 2.3 创建项目...