1. 程式人生 > >從零開始Rtklib解讀篇-簡單的程式設計理論和演算法及結構分析(四)

從零開始Rtklib解讀篇-簡單的程式設計理論和演算法及結構分析(四)

首先我們來說一說VS常用的除錯技巧,比較常用的內容我會寫在下面。

1、斷點。我就不細說了。

2、條件斷點,在斷點上右鍵,彈出的選單可以選擇條件設定,在找一些問題的時候會比較快一點。我有時會配合靜態變數強行搜尋到error發生前。

3、檢視指標值,監視視窗輸入,比如p,3 ,即可檢視p指向的指標3個單元內的值

4、懸停檢視。不說了,地球人都知道。

5、F5,F10,F11,ctrl++,ctrl+-等等。

6、轉到定義。

7、箭頭拖拽回去可以回去。然後step in找到錯誤。

8、待續。

我覺得比較有用的一些程式設計習慣。

1、做好註釋。子函式要註明功能,輸入和輸出。功能的定義要有一定的複用性。

2、做好命名。命名是個技術活,不但要符合命名規範,而且要言之有物,讓人一看大概能明白具體是做什麼的,切記毫無意義的命名。

3、做好return。有分配就有free,而且通常而言,保持always return。

4、做好定義。最後都保持定義在前,有些編譯器要求定義要統一在前。定義言之有物,條理清晰。

5、做好初始化。很重要。尤其是涉及到指標和地址複用的時候,切記注意。我個人認為如果開發的時候這種情況的參量在文件裡稍微註明一下為好。

6、注意邏輯清晰。合理的模組設定,參量定義,執行流程都反映了邏輯,寫的條理清晰,閱讀迅速也是非常重要的。

7、注意效率。小程式的執行速度快,大程式就要考慮優化了。

8、待續。


接下來回到正題,補充一個小點。

1、malloc的使用

malloc被用於記憶體分配,這裡的用法如下

if (!(rov_=(char *)malloc(strlen(rov)+1))) return 0;

含義為分配長度為strlen(rov)+1,type為char的記憶體,如果分配失敗,return。

為什麼+1?包括結尾通常的\0

2、Windows環境下,將某路徑下的一個或多個*.*d檔案批量轉化為*.*o檔案。

將crx2rnx.exe與*.*d檔案放在同一路徑下,執行cmd,進入該路徑。

1、對單個檔案,需要逐一執行crx2rnx,例如:

crx2rnx iqqe0640.12d

2、對多個檔案,採用迴圈語句以提高效率,例如:

for %a in (*.*d) do crx2rnx.exe %a

根據rtklib解壓的cmd根據不同的檔案命令為

1、sprintf(cmd,"gzip -f -d -c \"%s\" > \"%s\"",tmpfile,uncfile);

2、sprintf(cmd,"crx2rnx < \"%s\" > \"%s\"",tmpfile,uncfile);

PS:分號裡面的啦。Temfile和uncfile分別為原檔案地址和解壓地址

3、關於va_list, va_start和va_end.

Va_list給出了指向不定輸入的指標,va_start&va_end給出了初始化讀取和讀取結束。

Vpfrintf和fprintf的區別在於一個是直接的格式和內容輸出,一個是通過指標指向的內容控制。

所以對於內容可變的內容,最好還是通過va_start和va_end進行控制。

所以對於rtklib裡的trace函式,首先它是一種根據level進行error輸出的形式,具有一定的控制功能。另外因為宣告中輸入的不確定,這裡呼叫了va_start,va_end進行處理。


Reference

1、http://blog.sciencenet.cn/blog-1217335-1010460.html