PDA

View Full Version : go to



morika
دوشنبه 20 اردیبهشت 1389, 22:17 عصر
سلام
می خواستم ببینم معادل دستور go to تو VB چیه تو ++C
مثلا تو vb می نوشتیم :go to 4
حالا برای اجرا شدن یک خط خواص تو ++C باید چیکار کنیم؟

ممنون

morika
دوشنبه 20 اردیبهشت 1389, 22:37 عصر
می یه مشکلی دارم

کد goto begin من اینجاست:


int exit()
{
char ch;
int m;
cout<<"\n\nDo you want to comtinue? Y/N: ";
cin>>ch;
switch(ch)
{
case 'Y':
case 'y':
cout<<"\n\n";
m=menu();
goto begin;
break;
case 'N':
case 'n':
exit(0);
default:
int e=exit();
break;
}
}

و کد begin هم اینجاست:


void main()
{
//menu=====================
int m;
m=menu();
//=========================
char name[30],len=6;
begin:
switch(m)
{
case 1:
enter(name);
break;
case 2:
print(name,len);
getch();
break;
}
}

ولی پیغام میده که begin تعریف نشده است.

(من کتابخونه stdio.h رو دارم و کد goto begin از کد begin بالاتر است)

tdkhakpur
دوشنبه 20 اردیبهشت 1389, 22:54 عصر
ولی پیغام میده که begin تعریف نشده است
خب باید هم errore بدهد.
اساسا باید label سازی در c کلا کنار گذاشته شود بعضی مواقع برنامه نویس فکر میکند که دادن برچسب به یک نقطه خاص باعث میشود که آدرس مکان مورد نظر را در دست دارد ولی غافل از اینکه cpu پارامترهای دیگری را هم برای ارجا به یک label در نظر میگیرد مخصوصا زبان سطح بالایی مانند c که از قطعات و کدهای مختلفی برای انجام عملیات استفاده میکند که پرشهای ساده مانند goto را فوق العاده تحت تاثیر قرار میدهد.
ولی در مورد اینکه چرا begin را نمیشناد کاملا درست بوده چرا که begin تعریف شده شما مربوط به محدوده تابع main بوده و از نظر اسمبلی ادرس آن مابین اولین آکولا باز main و اخرین آکولاد بسته main خواهد بود که قطعه کد متفاوتی با تابع exit دارد.
و کامپایلر به خاطر متفاوت بودن قطعه هیچ وقت اجازه کامپایل را نخواهد داد چرا که اگر اجازه دهد برنامه شما اساسا به درستی اجرا نخواهد شد.
در نظر بگیرید خود تابع exit پارامترهایی را داخل پشته قرار میدهد آیا کار درستی هست که بدون برداشتن داده ها از پشته و تمیز کردن آن به قطعه دیگری پرش کرد و داده ها رو هم انبار شوند.

morika
دوشنبه 20 اردیبهشت 1389, 23:07 عصر
خب پش با این توضیحات من برای حل مشکلم باید چیکار کنم؟

البته مشکل من تو این تاپیک هست:
http://barnamenevis.org/forum/showthread.php?t=220022

tdkhakpur
دوشنبه 20 اردیبهشت 1389, 23:21 عصر
تا اونجایی که من میبینم اصلا استفاده از تابع exit نبرده اید پس برای چی میخواهید کامپایل کنید.
داخل تاپیک بالا مشکتان را ادامه بدید.پاسخ به اونجا ارسال میشود.