c语言的隐式声明的危害

万恶之源:C语言中的隐式函数声明_隐式声明_smstong的博客-CSDN博客

 

示例:riscv32的平台,在32位架构上定义一个函数,函数的返回值为uint64_t,在调用该函数的时候返回值的高32位异常,其原因就是因为没有对该函数进行声明,编译的时候使用了隐式声明,默认返回int类型导致的。需要添加函数声明

如图下面的tx_ha2_mfp_compute_bit函数调用hsu_aes_cmac函数(该函数的返回值是uint64_t类型),hsu_aes_cmac函数由于没有声明导致返回的是int型

正常来说返回值寄存器a0 a1表示的是64位的uint64_t类型,但是调用hsu_aes_cmac函数后,a1被赋值了全FF,srai表示右移,然后高位赋值为1。这就是隐式声明导致的问题

 

posted on 2023-09-18 09:26  penglcool  阅读(63)  评论(0)    收藏  举报