如果我創建一個常量聯合對象(例如下面的代碼),那麼就不能進行成員分配。那麼在任何情況下,是否有任何使用const union對象的方法?常量聯合對象的用法是什麼?
union un
{
int i;
float f;
char c;
};
const union un a;
/// ! a.i = 10; error.
如果我創建一個常量聯合對象(例如下面的代碼),那麼就不能進行成員分配。那麼在任何情況下,是否有任何使用const union對象的方法?常量聯合對象的用法是什麼?
union un
{
int i;
float f;
char c;
};
const union un a;
/// ! a.i = 10; error.
您仍然可以初始化工會如下:
const union un a = { .i = 100 };
然後在你的代碼中使用它。
在C中,也就是說。在C++中,我認爲你可以寫一個構造函數和類似的東西。 – Xeo 2012-08-10 08:12:59
哈哈,你在35秒內擊敗了我。 :-) – 2012-08-10 08:13:08
這是我不知道的。這樣任何工會成員都可以初始化! – cirronimbo 2012-08-10 08:23:54
,您仍然可以在聲明它分配,比如像這樣:
const union un a = {0};
更新:該符號設置工會成員的第一。
這組數字是哪一個? – 2012-08-10 08:14:26
@ R.MartinhoFernandes,所有成員,爲零。 – 2012-08-10 08:15:02
是的,但這隻能做只分配第一個成員(或設置爲零,如上所述)! – cirronimbo 2012-08-10 08:19:14
在'c'中,通過不同成員來解釋工會與最近設定的不同。當然,它可能是「常量不穩定」的 - 即我們不會改變它,但其他人可能會,而且我們需要能夠看到這一點。 – BoBTFish 2012-08-10 08:12:38
如果整個該死的聯盟是'const',那麼不應該是這樣。 – Puppy 2012-08-10 08:14:08
@Xeo,當我使用gcc進行測試時,它不會在沒有「聯合」部分的情況下編譯。 – 2012-08-10 08:14:11