PDA

View Full Version : سوال: مشکل این کد چیه؟ خطای عجیبی صادر میشه.



ztx4
شنبه 07 فروردین 1389, 18:07 عصر
سلام دوستان
سوالم خیلی فوریه
من دارم یه برنامه به زبان سی می نویسم.سی نه سی پلاس پلاس!!!
این برنامه رو در Visual stdio 2008 نوشتم.
لازم به ذکره که از قسمت properties پروژه کامپایلر رو به TC تغییر دادم.
ضمنا نوع پروژه هم c++ win 32 consol app هستش.
فرمت فایل رو هم از .CPP به .C تغییر داده ام.
اما خطاهای زیر صادر می شود.
اول کد مورد نظر:


#include <stdio.h>
void main(void){
printf("In the nem of god.");
int max;
max=3200;
int k1;
int k2;
int k3;
k1=1;
k2=2;
k3=3;

}


اینم خطاهایی که میده:


Error 1 error C2143: syntax error : missing ';' before 'type' c:\documents and settings\ztx4\my documents\visual studio 2008\projects\c2\c2\c2.c 4 c2
Error 2 error C2065: 'max' : undeclared identifier c:\documents and settings\ztx4\my documents\visual studio 2008\projects\c2\c2\c2.c 5 c2
Error 3 error C2143: syntax error : missing ';' before 'type' c:\documents and settings\ztx4\my documents\visual studio 2008\projects\c2\c2\c2.c 6 c2
Error 4 error C2143: syntax error : missing ';' before 'type' c:\documents and settings\ztx4\my documents\visual studio 2008\projects\c2\c2\c2.c 7 c2
Error 5 error C2143: syntax error : missing ';' before 'type' c:\documents and settings\ztx4\my documents\visual studio 2008\projects\c2\c2\c2.c 8 c2
Error 6 error C2065: 'k1' : undeclared identifier c:\documents and settings\ztx4\my documents\visual studio 2008\projects\c2\c2\c2.c 9 c2
Error 7 error C2065: 'k2' : undeclared identifier c:\documents and settings\ztx4\my documents\visual studio 2008\projects\c2\c2\c2.c 10 c2
Error 8 error C2065: 'k3' : undeclared identifier c:\documents and settings\ztx4\my documents\visual studio 2008\projects\c2\c2\c2.c 11 c2



لطفا راهنمایی کنید.

amin1softco
شنبه 07 فروردین 1389, 18:44 عصر
برنامه مشکلی نداره اما برخی از کامپایلر ها نسخه های 2008 مثل اینکه مشکل دارند اینجا رو شما ببین
http://barnamenevis.org/forum/showthread.php?t=209959

#target
شنبه 07 فروردین 1389, 18:53 عصر
من که از محیط C++‎‎Builder 2009 استفاده می کنم در Error پیام داد که مشخص شد نباید اونجا متغیر ها رو تعریف کرد
بهرحال Microsoft Visual Studio خطاهای چرت و پرت زیاد میده همین باعث شده که الان دو ساله که من به C++‎‎Builder مهاجرت کردم
اینم کد تصحیح شده





#include <stdio.h>
int main(void)
{

int max;
int k1;
int k2;
int k3;
max = 3200;
k1=1;
k2=2 ;
k3=3;
printf("In the nem of god.");
}



خطایی که CodeGear C++‎Builder 2009 می گیره




[BCC32 Error] File1.c(4): E2140 Declaration is not allowed here
[BCC32 Error] File1.c(6): E2140 Declaration is not allowed here
[BCC32 Error] File1.c(7): E2140 Declaration is not allowed here
[BCC32 Error] File1.c(8): E2140 Declaration is not allowed here
[BCC32 Warning] File1.c(13): W8004 'k3' is assigned a value that is never used
[BCC32 Warning] File1.c(13): W8004 'k2' is assigned a value that is never used
[BCC32 Warning] File1.c(13): W8004 'k1' is assigned a value that is never used
[BCC32 Warning] File1.c(13): W8004 'max' is assigned a value that is never used


گفته Declaration is not allowed here . اول باید همه متغیر ها رو تعریف کنی سپس برنامه رو بنویسی

ztx4
شنبه 07 فروردین 1389, 18:56 عصر
ممنون از پاسختون.
اما مشکل من با ایشون فرق داشت.
من می تونم برنامه ی زیر رو با موفقیت کامپایل کنم.اما بالایی رو نه



#include <stdio.h>
void main(void){
printf("In the nem of god.");
}

راه حلی برای این موضوع هست؟

ztx4
شنبه 07 فروردین 1389, 19:00 عصر
من که از محیط C++‎Builder 2009 استفاده می کنم در Error پیام داد که مشخص شد نباید اونجا متغیر ها رو تعریف کرد
بهرحال Microsoft Visual Studio خطاهای چرت و پرت زیاد میده همین باعث شده که الان دو ساله که من به C++‎Builder مهاجرت کردم
اینم کد تصحیح شده





#include <stdio.h>
int main(void)
{

int max;
int k1;
int k2;
int k3;
max = 3200;
k1=1;
k2=2;
k3=3;
printf("In the nem of god.");
}



ووواااا!!!!!!:متعجب::متعجب::مت جب:
این رو درست اجرا کرد!
یعنی چی؟:متفکر::متفکر::متفکر:

فکر کنم برای دستورات در ویژوال استدیو اولویت تعریف کردند:لبخند::لبخند::لبخند:
مرسی دوست عزیز

#target
شنبه 07 فروردین 1389, 19:04 عصر
در C اول همه متغیر ها رو تعریف کن بعد برنامه رو بنویس
بقول کامپایلر C++Builder 2009 که Declaration is not allowed here
به پست قبلی برگردید . اطلاعات رو ویرایش کردم

ztx4
شنبه 07 فروردین 1389, 19:07 عصر
در C اول همه متغیر ها رو تعریف کن بعد برنامه رو بنویس
بقول کامپایلر C++‎Builder 2009 که Declaration is not allowed here
به پست قبلی برگردید . اطلاعات رو ویرایش کردم

ممنون دوست عزیز
متوجه شدم.
لطف کردید
پس ایراد از زبان سی هستش نه کامپایلر درسته؟
چون من زبان سی رو خوب بلد نیستم.

Nima_NF
شنبه 07 فروردین 1389, 19:24 عصر
ممنون دوست عزیز
متوجه شدم.
لطف کردید
پس ایراد از زبان سی هستش نه کامپایلر درسته؟
چون من زبان سی رو خوب بلد نیستم.
جواب بله هست.
اگر کامپایلری همه استاندارد های جدید را در خود پیاده سازی کرده باشد، باید خطا بگیرد.

ztx4
شنبه 07 فروردین 1389, 19:28 عصر
ممنون از همه ی دوستانی که پاسخ دادند.
من مشکلم حل شد.

amin1softco
شنبه 07 فروردین 1389, 19:30 عصر
خوب پس چرا به من گیر نداد vc++2008???????

ztx4
شنبه 07 فروردین 1389, 19:33 عصر
خوب پس چرا به من گیر نداد vC++‎2008???????

شاید به قول دوستمون آقا نیما در کامپایلر شما استاندارد های جدید رعایت نشده است!
شاید هم در این کامپایلر بری این موضوع پیش بینی های لازم انجام شده.

Nima_NF
شنبه 07 فروردین 1389, 20:53 عصر
خوب پس چرا به من گیر نداد vC++‎‎‎2008???????
مایکروسافت آخرین نسخه استاندارد ++C را در کامپایل خود همیشه پیاده سازی می کند.
اما در مورد زبان C خیر.

مایکروسافت با آمدن نسخه 2010 اعلام کرد "که برنامه نویسان و مشتریان ما، چندان رغبتی به استفاده از C ندارند، لذا از ما تقاضای پیاده سازی آخرین استاندارد های زبان C را نمی کنند، پس تا زمانی که مشتریان از ما نخواهند ما نیز پیاده سازی نخواهیم کرد".

خوب حق هم دارند، اکثر برنامه نویسان تحت ویندوز بیشتر دنبال ++C هستند و کمتر با C می نویسند، به همین خاطر نمی خواهند بی خودی هزینه کنند و چنین مواردی را که در استاندارد اخیر C هست (مثل همین تعریف متغیر ها در اول بلاک) را پیاده سازی کنند.

مثلا در لینوکس چون C همانند ++C کاربران زیادی دارد، gcc سعی می کند تا جای ممکن اکثر موارد جدید در استانداردهای C را پیاده سازی کنید.