簡體   English   中英

轉換sizeof中包含的結構類型

[英]Casting a structure type included in the sizeof

我有一個函數,它接受作為參數提到的大小,如:

 sizeof(tcpstuct) * tcprules

讓我們說

tcpstuct是具有INT32類型成員的結構。 (INT32的類型為int,由於平台依賴性而定義為INT32)

tcprules是NAT32類型的變量。

如果函數接受另一種類型,請說WORD32。 演員怎么樣?

我嘗試過的:

(WORD32 ) (sizeof(tcpstuct) * (INT32 )tcprules )
(WORD32 ) ((INT32 )(sizeof(tcpstuct) * (INT32 )tcprules ))

但這兩個都引發了seg故障! 我需要施放sizeof嗎?

編輯:正如所有人都指出的那樣,Seg錯誤是由於其他地方的錯誤感謝gdb

如果sizeof(tcpstuct)是一個“thingy”的大小,而tcprules是“thingies”的數量,那么就不需要任何強制轉換。

C自動在不同的整數類型之間進行轉換,因此表達式sizeof(tcpstuct) * tcprules具有的任何類型都應轉換為WORD32 (無論是什么,但假設它是整數類型)。

您的代碼中的錯誤很可能是在其他地方,並且此表達式不太可能導致您發布的任何版本中的段錯誤。 也許segfault屬於您調用的函數。

我發現你的陳述中沒有任何潛在的崩潰。 段錯誤必須在其他地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM