[英]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)
盡管很難知道u32IDLHeaderAddress
的確切類型,但很難說這是產生約束違規的第一個參數。
您出於某種原因似乎認為這是第二個。 第二個參數對我來說很好-它已經包含了所需的所有強制類型轉換(盡管看起來有些“用括號括起來”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.