C语言中的类型转换

Type Casting in C language

如何类型转换 (u32IDLHeaderAddress + FIOL__nFEEIDLHeaderLength) 以避免违反约束?

函数声明-

       Finit(const uint16 (*pastIDLTable)[2], uint16 u16NrOfDataset);

函数调用 -

      Finit((u32IDLHeaderAddress + IDLHeaderLength),
            (((*(uint32 *)(u32IDLHeaderAddress + 4) - FIOL__nFEEIDLHeaderLength)/4)));

对于提供的函数声明,第一个 参数转换应如下所示

(const uint16 (*)[2]) (u32IDLHeaderAddress + IDLHeaderLength)

似乎是 first 参数导致了约束冲突,尽管在不知道 u32IDLHeaderAddress 的确切类型的情况下很难说。

你出于某种原因似乎相信它是第二个。第二个参数对我来说看起来不错——它已经包含了它需要的所有转换(尽管它看起来有点 "overparenthesised")。