溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Tool中如何實(shí)現(xiàn)函數(shù)引用

發(fā)布時(shí)間:2021-12-22 11:01:32 來(lái)源:億速云 閱讀:158 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章主要為大家展示了“Tool中如何實(shí)現(xiàn)函數(shù)引用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Tool中如何實(shí)現(xiàn)函數(shù)引用”這篇文章吧。

最近有童鞋遇到一個(gè)浮點(diǎn)函數(shù)返回異常的問(wèn)題。代碼簡(jiǎn)化如下

Tool中如何實(shí)現(xiàn)函數(shù)引用

在VxWorks里運(yùn)行一下

Tool中如何實(shí)現(xiàn)函數(shù)引用

計(jì)算結(jié)果明顯不對(duì)。為啥?

看看Workbench的Build Console,有個(gè)Warning:

Tool中如何實(shí)現(xiàn)函數(shù)引用

原來(lái)是沒(méi)有聲明函數(shù)aaa()

把代碼改一下

Tool中如何實(shí)現(xiàn)函數(shù)引用

再跑一次

Tool中如何實(shí)現(xiàn)函數(shù)引用

OK,it works!

有興趣的童鞋可以把兩次的bbb.o文件反匯編出來(lái)

Tool中如何實(shí)現(xiàn)函數(shù)引用

對(duì)比一下

Tool中如何實(shí)現(xiàn)函數(shù)引用

對(duì)應(yīng)的指令確實(shí)不一樣了,不過(guò)我本科那點(diǎn)兒匯編知識(shí),早就不知道去哪了...

接下來(lái),把剛剛的類型擴(kuò)展一下

Tool中如何實(shí)現(xiàn)函數(shù)引用

再看看運(yùn)行結(jié)果

Tool中如何實(shí)現(xiàn)函數(shù)引用

ccc()和ddd()的內(nèi)部操作還是正常的,但返回值溢出了;而bbb()更不幸,內(nèi)部處理都亂了,說(shuō)明入?yún)⒕鸵呀?jīng)錯(cuò)了。

把返回值的長(zhǎng)度打印出來(lái)看看:

Tool中如何實(shí)現(xiàn)函數(shù)引用

都變成4Bytes了

Tool中如何實(shí)現(xiàn)函數(shù)引用

看來(lái)編譯器在找不到原型時(shí),都是按32bits來(lái)處理的。

把聲明都加上吧:

Tool中如何實(shí)現(xiàn)函數(shù)引用

這次都正常了

Tool中如何實(shí)現(xiàn)函數(shù)引用

當(dāng)然了,函數(shù)聲明最好還是放到頭文件里,然后引用頭文件就可以了。

另外,對(duì)于這典型的浮點(diǎn)操作,我們之前提到過(guò),創(chuàng)建Task時(shí)需要包含VX_FP_TASK這個(gè)選項(xiàng)

Tool中如何實(shí)現(xiàn)函數(shù)引用

以上是“Tool中如何實(shí)現(xiàn)函數(shù)引用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI