2016-09-19 87 views
-3

我在file1.c中有一個名爲dump的函數。c函數返回丟失精度

void dump(unsigned long val, unsigned char raw){ 

    unsigned long dec = 0; 

    dec = hex(val); 

} 

十六進制函數在file2.c中。

unsigned long hex(unsigned long hex){ 
    unsigned long result; 
... 
    return result; 

} 

由於某些原因,dec變量只包含2字節的數據。如果將十六進制函數放在與轉儲函數相同的文件中,它將包含所有數據。 dec變量是局部變量,並且不在其他地方使用。 有人知道爲什麼會發生這種情況嗎?

如果我把十六進制函數放在file1.c中,它會給出正確的輸出。所以十六進制函數中的邏輯正在工作。

+1

我們需要看'hex'的代碼 –

+0

_尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及重現它所需的最短代碼在問題本身。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建一個最小,完整和可驗證的示例._ –

+3

有關'unsigned long hex'的信息告訴我,OP幾乎對數學和計算的每個方面都感到困惑。 –

回答

-2

這可能是一個鏈接問題,而不是從正確的文件中拾取hex()。嘗試鏈接沒有file2.o,它應該抱怨失蹤的功能。

+0

也許,也許OP也不明白背後的十六進制數字背後的概念 – rak007

+0

加入h文件後,它的工作! – juysw