最近开始使用C开发MTK平台游戏发现很多问题!
或者说是 嵌入式C的要求,作为一个JAVA程序员来说,这些注意点真是相对有碍程序开发!
1.变量的声明必须放在靠近{的地方
比如
- view plaincopy to clipboardprint?
- void setFightState( int _fightState )
- {
- int i=0;
- fightState = _fightState;
- }
方法体内的2行代码不可以调换位置,因为 变量声明必须靠近{
这是嵌入式编译器的要求,没办法更改!
但VC6会有提示!
2.好多标准C函数不可以用,比如
rand();
要用SDK提供的方法 mrc_rand();
这个VC6不会提示错误!
当然 如果给方法增加了 参数 IDE也不会提示!
这也许是VC6的 不给力!或者是 参数为void的缘故
总之 不能及时提示开发者将大大削减生产力呀!
3.不能给全局变量初始化赋值
我有一个全局 坐标数组
- view plaincopy to clipboardprint?
- int posX[] = { 70, 64, 26, 32, 176, 170, 208, 214 };
这个定义无法在真机上获得到真实数据,
全局变量被初始化成了0,
如果将其放到一个方法里赋值,那会很不直观
- void init_arena_data()
- {
- posX[0]=70; posX[1]=64; posX[2]=26; posX[3]=32; posX[4]=176; posX[5]=170; posX[6]=208; posX[7]=214;
- }
这些数据不能被初始化赋值,就很难使用 常量来描述 数组
4.在载入图片文件的时候,不能获取图片的宽高!
5.sizeof()方法获得的长度与实际占用字节数不符合
- typedef struct
- {
- int8 moduleID; //图元ID
- int8 x; //图元偏移坐标
- int8 y;
- }ModuleApp;//图元在帧中应用时的数据
- typedef struct
- {
- int8 moduleAppCount; //图元数量
- ModuleApp *moduleApp; //图元数组
- }Frame;//帧数据
如果用sizeof(Frame);得到的结果是8,这是因为计算机管理内存的时候需要对齐,所以不是人为想象的5,4,7之类的!
6.数组不能获取长度
这也许是Java程序员比较烦的事情了!
但C有C的规定,只是用着不爽而已!
7.C与Java的差别就不说了!