Typically, you have "extern ..." in all but one source file, and just "..." in one source file where that symbol is defined.
Saying "extern int foo;" means "I expect some other module to have foo." Saying "int foo;" means "I have foo." So exactly one module needs to have foo, to avoid linker errors. There's an exception in C... If you have an uninitialized variable, it tells the linker to allocate space for it (it's a "common symbol" instead of a regular symbol). IMHO this is bad practice, because it lets two modules think they "own" a variable, perhaps with two different purposes. ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ Mspgcc-users mailing list Mspgcc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mspgcc-users