→ loveme00835:請修改為符合內文之標題 11/28 23:54
※ 編輯: monkey12 來自: 118.167.6.234 (11/29 00:02)
開發平台(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)