you use extern when you want to tell the compiler the type of a variable or function which is defined in another file. if you have a variable called blah, of type int, at global scope (not static, or local to a function) in foo.c and you want to use it in bar.c, you would put "extern int blah;" somewhere in bar.c, or in a file that bar.c includes. that way, when the compiler is working on bar.c, it knows the type of the variable 'blah'. the linker will come around later and make sure all references to 'blah' are looking at the same thing. Cleek | Image Toolkits | Thumbnail maker