踩坑 修改標頭檔案 stdint h

2021-10-16 18:44:02 字數 928 閱讀 3936

個人部落格

這裡說踩坑似乎不合適,應該是自己坑自己,不過還是應當記錄下來,時時刻刻提醒自己!

不同專案對 int、unsigned int等資料型別會使用 typedef 為這些資料型別定義乙個新的名字,這樣在移植專案的過程中,如果不想大規模的改動原始碼,則需要自己在標頭檔案中依據修改的名字自己用 typedef 宣告一下。

我在移植乙個開源專案時,這個專案的資料型別我自己的工程是沒有的,所以沒多想,動手就在 keil 中右鍵跳轉到已經存在的資料型別的標頭檔案,當時沒注意這個標頭檔案的名字是 stdint.h,在宣告完開源專案的資料型別後,編譯也不會報錯。結果就是這樣乙個小改動,自己埋下了深坑?,每次想起都覺得十分不應該!

最關鍵的 unsigned long long 型別居然被我寫錯,寫成 __int64 直接就變成了 long long 型別,後面執行的時候總是掛掉,單步除錯的時候總是在將資料轉換的時候掛掉,要麼指標跑飛要麼棧溢位的,調了整整快乙個星期,後面還以為是電腦的大小端和 cortexm3 的大小端不一致導致的,調整了資料轉換後,雖然不會執行的時候掛掉,但是總是會返回出錯。

最後還是大佬在旁邊幫我單步除錯發現的資料型別宣告的問題,被無情的打臉和嘲諷後,修正了問題,最後執行的時候一遍就通過了。?

這裡主要是兩點錯誤:

最後 copy 別人電腦下的stdint.h 檔案,將自己修改的替換後,在自己工程的資料型別宣告標頭檔案中,新增開源**中的資料型別後,問題解決!這是乙個粗心大意給自己製造的 bug,付出了血的教訓,故此記錄下,提醒自己!

【踩坑】notepad++ hex-editor

踩坑 引用標頭檔案導致重複定義問題 extern

今天在乙個.h標頭檔案中定義了乙個全域性變數,然後在兩個.cpp檔案中引用了該標頭檔案,導致變數重複定義問題。我們知道,變數有宣告和定義,宣告可以有多次,但是定義只能有一次。打個比方 檔案 int a 然後我們在b.cpp和c.cpp中引用a.件,這樣就會出現重複定義。int a 會在每乙個檔案中重...

feign踩坑 通過Feign上傳檔案(踩坑)

引入依賴 org.springframework.cloud spring cloud starter openfeign 服務提供者 restcontroller public inte ce fileuploadservice commonresultuploadfile requestpart...

修改mysql資料儲存路徑 踩坑紀實

安裝好mysql資料庫以後,會有乙個指定的資料儲存位置,這個是在安裝過程中通過定義my.cnf 檔案確定的。my.cnf裡面有句話,這個就是定義了資料的位置了。datadir var lib mysql開啟路徑中指定的資料夾,可以看到很多檔案,這裡就是存放資料的位置了 root localhost ...