c 函数 return 失去精度

c function return loses precision

我在 file1.c 中有一个名为 dump 的函数。

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 个字节的数据。如果我将 hex 函数与 dump 函数放在同一个文件中,它包含所有数据。 dec 变量是局部变量,不在其他任何地方使用。 有人知道为什么会这样吗?

如果我将十六进制函数放在 file1.c 中,它会给出正确的输出。所以十六进制函数中的逻辑是有效的。

这可能是一个链接问题,没有从正确的文件中选取 hex()。尝试在没有 file2.o 的情况下进行链接,它应该会抱怨缺少函数。