طبق کدی که خودت درج کردی، auto در تعریف متغیر هایی به کار میره که قراره به شکل محلی به کار گرفته بشن. برای همین نمیشه auto را خارج یک تابع به کار برد و طبق مثال متغیر y خارج از بلوک main ناشناخته خواهد بود. در طرف مقابل extern در تعریف متغیر هایی به کار میره که قراره جهانی باشن و برای همین طبق مثال متغیر x هم داخل بلوک main و هم خارج اون شناخته شده است.
حالا اگر شما بخواهید auto رو خارج از بلوک به کار ببرید، با یک Syntax Error برای int رو به رو میشید. ولی قضیه به اینجا ختم نمیشه. با حذف int از مقابل auto به هنگام کامپایل یک Runtime Error به وجود خواهد اومد که بیان می کنه بهره گیری از auto خارج از یک بلوک امکان پذیر نخواهد بود چون فلسفه ی auto محلی بودن هستش.
به علاوه هر متغیری که داخل یک تابع تعریف بشه، اگر Storage Classی براش در نظر گرفته نشه، به طور پیش فرض از نوع auto خواهد بود یعنی مطابق مثال auto int y = 5; با int y = 5; فرقی نمی کنه.
برای اطلاعات بیش تر:
C - Storage Classes
پ.ن.:
سجاد جان لطفا اگه سوال جداگانه ای داره، در تاپیک جداگانه مطرحش کن تا کاربران بعدی که براساس عنوان به تاپیک ها مراجعه می کنن، طی دنبال کردن پست ها سر در گم نشن. ممنون برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
Bookmarks