متغیرهای عمومی که در خارج از تابع main تعریف میشن دارای کلاس حافظه خارجین. حالا اگر متغیرهایی با کلاس حافظه استاتیک عمومی قبل از تابع main تعریف بشه، این متغیرها با متغیرهای عمومی چه تفاوتهایی دارن؟ مثال:
static int x,y; int m,n; int main(){ ... }
اگر کل برنامه تنها در یک فایل باشه، هیچ تفاوتی با هم ندارن. اما گاهی ممکنه برنامهها خیلی طولانی باشن و مجبور بشیم بخشهایی از برنامه رو در چند فایل بذاریم. که در این صورت متغیرهای استاتیک عمومی فقط در یک فایل ( در همون فایلی که تعریف شده) و متغیرهای عمومی در تمام فایلها قابل دسترسی هستن و برای دسترسی به اونها در فایلهای دیگه باید اونها رو با دستور extern به کامپایلر اعلان کرد. (دستور extern به کامپایلر میگه برای این متغیرها حافظه جدیدی در نظر نگیره و از همون حافظهای که در فایل دیگه بهش اختصاص داده شده استفاده کنه.)