如何强制转换(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
确切类型的情况下很难说,但它似乎是第一个产生约束冲突的参数。您出于某种原因似乎认为这是第二个。第二个参数对我来说看起来不错-它已经包含了所需的所有强制类型转换(尽管看起来有些“用括号括起来”)。