如何类型转换 (u32IDLHeaderAddress + FIOL__nFEEIDLHeaderLength)
以避免违反约束?
函数声明-
Finit(const uint16 (*pastIDLTable)[2], uint16 u16NrOfDataset);
函数调用 -
Finit((u32IDLHeaderAddress + IDLHeaderLength),
(((*(uint32 *)(u32IDLHeaderAddress + 4) - FIOL__nFEEIDLHeaderLength)/4)));
最佳答案
对于提供的函数声明,第一个参数转换应如下所示
(const uint16 (*)[2]) (u32IDLHeaderAddress + IDLHeaderLength)
似乎是第一个参数导致了约束冲突,尽管在不知道 u32IDLHeaderAddress
的确切类型的情况下很难说。
出于某种原因,你似乎相信这是第二个。第二个参数对我来说看起来很好 - 它已经包含了它需要的所有转换(尽管它看起来有点“括号过多”)。
关于c - C语言中的类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40797639/