我收到錯誤錯誤而鑄字結構爲整數
error: aggregate value used where an integer was expected
上編譯此代碼:
#include <stdio.h>
typedef unsigned long U32;
typedef struct hello_s
{
U32 a:8;
U32 b:24;
}hello_t;
int main()
{
hello_t str;
U32 var;
str.a = 0xAA;
str.b = 0xAAA;
var = (U32)str;
printf("var : %lX\n", var);
return 0;
}
能有人請解釋什麼錯誤意味着,什麼我做錯了。
編輯:我明白這是一個愚蠢的事情要做。我想知道的是爲什麼編譯器會爲此哭泣。爲什麼不能把前32位分配給整數。
嗯,這是有原因的錯誤...的原因是它沒有意義。想象一下,有人試圖將電話簿轉換爲整數... – 2012-09-18 20:00:54
C語言本質上是非常原始的。因此,某些事情不被支持或允許。 C甚至不試圖在幕後爲你工作。沒有背後。從技術上講,C有多簡單?它幾乎與彙編語言或機器代碼一樣簡單。出於這個原因,你不能直接支持動態數組,任意的數字精度,很容易將事物彼此轉換(例如,從字符串到/從字符串),還有更多的東西。在你的程序或它使用的庫中必須有代碼來完成這項工作。 –
爲什麼downvotes?我發現這個問題很有幫助,因爲我的情況相同。並且user529758不被要求 - 鑄造總是將蘋果轉換成橙子。 – Vorac