2011-01-29 55 views

回答

3

嚴格說來,沒有 - 不同名稱的類型是不同的類型,即使類型的結構是相同的。 (當然,typedef只是爲現有類型引入了一個替代名稱;這些類型是相同類型的。)

但是,在實踐中,有許多特技可以拉動和擺脫。但嚴格來說,他們是在作弊。使用void指針是破壞系統的一種方式;另一個不使用函數的原型聲明;可變長度參數列表可以是另一個。

+0

不知道如果我同意100%。 C編譯一次只能運行一個編譯單元,因此編譯器無法決定向結構添加隨機填充字節。還要考慮C++ POD類型的問題......如果C結構在它們之間不兼容,它們又如何與C結構兼容? – 6502 2011-01-29 12:08:29

0

如果你問是否有可能比較兩個struct的平等答案是否定的。只有賦值,你可以從函數返回結構。

+0

這是真的,但沒有問什麼。 – 2011-01-29 11:35:14

+0

我看到Leffler的迴應,如果這是你的意思,但認爲這個問題可能一直在問一些不同的東西,這就是爲什麼我的答案以「如果」開頭。請記住,英語不是我們這裏許多人的第一語言 - 包括我在內。 – 6502 2011-01-29 11:52:47

-2

沒有運營商在C比較兩個結構的,你可以使用memcmp來代替:

if(memcmp(&structvar1, &structvar2, sizeof structvar1)) 
    puts("not equal"); 
else 
    puts("equal");