最近開始使用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的差别就不說了!