第一个例子
/* t.h */
#ifndef _H_
#define _H_
inta;
#endif
/* foo.c */
#include
#include "t.h"
struct{
chara;
intb;
} b = { 2, 4 };
intmain();
voidfoo()
{
printf("foo:\t(&a)=0x%08x\n\t(&b)=0x%08x\n
\tsizeof(b)=%d\n\tb.a=%d\n\tb.b=%d\n\tmain:0x%08x\n",
&a, &b,sizeof b, b.a, b.b, main);
}
/* main.c */
#include
#include "t.h"
intb;
intc;
intmain()
{
foo();
printf("main:\t(&a)=0x%08x\n\t(&b)=0x%08x\n
\t(&c)=0x%08x\n\tsize(b)=%d\n\tb=%d\n\tc=%d\n",
&a, &b, &c,sizeof b, b, c);
return0;
}
Makefile如下:
test: main.o foo.o
gcc -otest main.o foo.o
main.o: main.c
foo.o: foo.c
clean:
rm*.o test
运行情况:
foo: (&a)=0x0804a024
(&b)=0x0804a014
sizeof(b)=8
b.a=2
b.b=4
main:0x080483e4
main: (&a)=0x0804a024
(&b)=0x0804a014
(&c)=0x0804a028
size(b)=4
b=2
c=0
相关阅读: