看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): ===Q1=== typedef struct KKK { char a,b,c; }KKK; 則sizeof(KKK) = 3 但 typedef struct KKK { struct { int c,d,e; char f,g,k; }; }KKK; sizeof(KKK) = 16 而非15??? why? ===Q2=== #define MACRO_A(P,S,F) ((S*)((unsigned char*)(P) - ((int)&((S*)0)->F ))) // NVidia typedef struct KKK { int a,b; struct { int c,d,e; char f,g,k; }; void *link; unsigned short ii[200]; unsigned int jj[12]; }KKK; main() 中 KKK obj; printf("obj pointer = 0x%x\n",&obj); printf("MACRO_A(&obj,KKK,link)=0x%x\n",MACRO_A(&(obj.link),KKK,link)); 第一個若印出 0x1ffaf0 則第二個也印出依樣 可以問一下那個macro是甚麼意思嗎? 以及為何第二個的結果是如此呢? === Q3 === 我寫了三種方法 法2怕不適用於所有地方 以及是否有更好更快的方法呢? http://codepad.org/ZYXbIM2b === Q4 === unsigned int func(unsigned int *pBase) { return *pBase; } unsigned int funcB(unsigned int *pBase) { return *((volatile unsigned int*)pBase); } 想請問 兩著差在哪阿? 我印出來結果一樣耶 :P -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.6.234 ※ 編輯: monkey12 來自: 118.167.6.234 (11/28 22:07)
loveme00835:請修改為符合內文之標題 11/28 23:54
※ 編輯: monkey12 來自: 118.167.6.234 (11/29 00:02)