如何强制转换(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确切类型的情况下很难说,但它似乎是第一个产生约束冲突的参数。

您出于某种原因似乎认为这是第二个。第二个参数对我来说看起来不错-它已经包含了所需的所有强制类型转换(尽管看起来有些“用括号括起来”)。

10-07 21:55