#include using namespace std;
//#pragma pack(1)
struct a
;struct b
;int main()
執行結果:
這個主要是由於位元組對齊所引起的
結構體預設的位元組對齊一般滿足三個準則:
(1)結構體變數的首位址能夠被其最寬基本型別成員的大小所整除。
(2)結構體每個成員相對於結構體首位址的偏移量(offset)都是成員自身大小的整數
倍,如有需要,編譯器會在成員之間加上填充位元組(internal adding)。
(3)結構體的總大小為結構體最寬基本型別成員大小的整數倍,如有需要,編譯器會在
最末乙個成員之後加上填充位元組(trailing padding)
一般利用下述**改變其預設的位元組對齊數,其中n是位元組對齊數
一些小技巧
關注 乙個好的程式設計師不應該把所有的判斷交給編譯器和偵錯程式,應該在程式中自己加以程式保護和錯誤定位,具體措施包括 對於所有有返回值的函式,都應該檢查返回值,除非你確信這個函式呼叫絕對不會出錯,或者不關心它是否出錯。一些函式返回錯誤,需要用其他函式獲得錯誤的具體資訊。例如accept返回inval...
一些小技巧
protected void repparent itemdatabound object sender,system.web.ui.webcontrols.repeateritemeventargs e 在父datalist的itemdatabound事件裡面寫子datalist的資料來源 繫結 ...
一些小技巧
protected void repparent itemdatabound object sender,system.web.ui.webcontrols.repeateritemeventargs e 在父datalist的itemdatabound事件裡面寫子datalist的資料來源 繫結 ...