成长
blueshycool
全部博文(114)
哲学(8)
计算机科学(2)
心理学(11)
我的C观(2)
算法(2)
SHELL(2)
C/C++(3)
VIM(0)
GCC(1)
内核(1)
系统应用(12)
Linux/UNIX(2)
翻译(0)
2010年(17)
2009年(26)
2008年(71)
Bsolar
captivat
fjzhuozl
zhushixi
lemonyan
cjfeii
ymc4444
peng6662
flyiran
分类: C/C++
2008-04-10 12:29:39
#include <stdio.h> #include <stdlib.h> #pragma pack(2) typedef struct { int a; char b; int c; float d; double e; char g; char h; }test_T; #define offset(T, f) ((int)(&(((T*)0)->f))) #define print_f(T, f); printf(#T"->"#f": %d\n", offset(T, f)); int main(int argc, char* argv[]) { print_f(test_T, a); print_f(test_T, b); print_f(test_T, c); print_f(test_T, d); print_f(test_T, e); print_f(test_T, g); print_f(test_T, h); return 0; }
输出结果:
test_T->a: 0test_T->b: 4test_T->c: 6test_T->d: 10test_T->e: 14test_T->g: 22test_T->h: 23
测试环境:
Linux version 2.6.23.1-42.fc8 (kojibuilder@xenbuilder4.fedora.phx.redhat.com) (gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)) #1 SMP Tue Oct 30 13:55:12 EDT 2007
上一篇:敢问路在何方
下一篇:奔头
登录 注册