如上圖所示,今天遇到的一個編譯問題,明明用法跟其他地方的一摸一樣,在主程序里編譯就沒問題,動態庫里死活都編譯不過去,可把我折磨死了,最后沒辦法,只能請教大佬,大佬過來幾分鍾就找到了問題,真正出錯的地方並不是報error的地方,而是截圖中圈紅的地方,最后發現是編譯選項出的問題,果然一看主程序里面編譯選項是-std=gnu99,動態庫里編譯選項卻是-std=c99,原因就出來了 下面給出解決方案:
warning: implicit declaration of function ‘typeof’
錯誤提示缺少')';
修改方法:
__asm__/__inline__/__typeof__
就可以解決該問題;
或者在gcc的編譯參數中去掉std=c99編譯選項,改成-std=gnu99.
最后編譯通過。
個人總結:為什么大佬可以解決這種問題,但是自己卻解決不了,一個是經驗問題,還有一個更重要的就是對數據的敏感度,出現這個問題我一直盯着error看,但其實真正原因是圈紅線的地方導致后面出現錯誤,所以距離一個優秀的程序員任重而道遠,唯有總結經驗,砥礪前行,學習大佬們的思維模式,對任何數據都保持懷疑態度,才會在這條路上越走越遠!!!