1樓:null122
struct myStruct;
2樓:BHEscaper
已經有人回答了 Bit fields ,在這裡我補充一下,使用 Bit fields 要注意位元組序的問題。
How Endianness Effects Bitfield Packing
上面鏈結比較詳細的說明了位元組序對 Bit fields 的影響 。
下面的鏈結則給出了一些檢測位元組序的技巧。
Pre-defined Compiler Macros / Wiki / Endianness
3樓:Milo Yip
可以用 Bit fields,但單獨使用時要做 packing:
#include
#pragma pack(push)
#pragma pack(1)
typedef
struct
Foo;
typedef
struct
Bar;
#pragma pack(pop)
intmain(),
b=;Fooc=
;printf
("c = %u\n"
,c.u
);Food=
;Fooe=
;// warning: large integer implicitly truncated to unsigned type [-Woverflow]
printf
("d = %u\n"
,d.u
);printf
("e = %u\n"
,e.u
);printf
("sizeof(Bar) = %u\n"
,(unsigned
)sizeof
(Bar
));Barz=
;printf
("z.x + z.y = %d\n"
,z.x
+z.y
);}輸出:sizeof(Foo) = 3
c = 444
d = 16777215
e = 0
sizeof(Bar) = 3
z.x + z.y = 30.
4樓:
當然可以,不過實現起來麻煩一些而已。
你完全可以用多個 char 拼成乙個資料結構,比如三位元組數值。
struct ThreeBytes
關於c語言自定義的函式,如果是void型別,那麼嚴格意義上這個函式它是返回空值還是根本就沒有返回值?
斷賦千歌 當呼叫乙個 long 返回值的函式時,執行函式的 return 語句時,會將返回值刻意存放在 rax 中。意味著呼叫者可以讀取 rax 來獲得函式返回的結果。void 函式,在執行 return 語句時,不會刻意的修改 rax 的值 在函式的呼叫的過程,會利用 rax 暫存器作為臨時變數,...
keras如何自定義triplet loss損失函式?
周周周 請問我想用keras自定義loss函式,loss y true 0 log y pred y true 0 log 1 y pred 我在實現過程中老是報錯,能麻煩您指導下嗎 其中 x 表示滿足x條件返回1 否則返回0 Rainman 22 這種操作是可以的。我用keras試驗過可行。但是最...
Swift Haskell 等可以自定義運算子的語言(不僅是過載),實現編譯器時跟其他語言有什麼區別?
深海 其他語言我不太了解,簡單說一下 Swift 的實現.Swift Haskell 還有不少函式式語言實現運算子的思路是一樣的 規定運算子必須由某些特殊字元構成,且這些字元和構成識別符號 identifier 的字符集的交集為空.這樣一來,lexer 就很簡單了,和傳統編譯器沒差.除了中綴 二元 ...