c - C语言中的类型转换

标签 c typecast-operator

如何类型转换 (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/

相关文章:

c - 如何在我的 C 程序中使用来自 Internet 的文本文件?

c - scanf_s 读取字符我做错了什么?

c# - 使用 yield return 返回泛型参数

c++ - 未调用类型转换运算符

c++ - 何时实现非常量转换运算符

javascript - 在 TypeScript 中,如何将 bool 值转换为数字,例如 0 或 1

c - 让内核模块链接到的标准内核库在哪里?

c++ - c linux 和 windows 中的键盘扫描代码

c - 使用 -D 构建 C 代码时出错