PDA

View Full Version : کاربر گزینه /TC در کامپایلر VC++



linux
دوشنبه 25 شهریور 1387, 13:33 عصر
#include <stdio.h>
void main()
{
int sum=0;
int mark[3];
int mm[1];
int i=0;
float avg=0;

mm[0]=10;

for(i=0;i<3;i++)
{
printf("what was your mark in lesson %d ?:",i);
scanf("%d",&mark[i]);
printf("\n");
}
for(i=0;i<3;i++)
{
printf("mark[%d]=%d\n",i,mark[i]);

}

int j=0;
//avg=sum/6;
printf("sum is %d\n",sum);
printf("your avrage is %f\n",avg);
printf("J is %d",j);
}
من این کد را با CL /TC کامپایل می کنم خطا می دهد ولی با CL /TP درست کار می کند
آیا در C مکان معرفی متغیر ها حتما باید در ابتدای هر تابع باشد؟

Mehdi Asgari
دوشنبه 25 شهریور 1387, 14:50 عصر
بله
در کتاب ریچی و کرینگان هم گفته شده:

In C, all variables must be declared before they are used, usually at the beginning of the
function before any executable statements.
(البته نمی دونم که آیا الان هم جزو ISO/ANSI C هست یا نه)

Nima_NF
دوشنبه 25 شهریور 1387, 16:02 عصر
قابلیت تعریف متغیر در میان دستورات از استاندارد c99 به زبان C اضافه شده است که با توجه به کاربرد کم C نسبت به ++C در ویندوز بسیاری از امکانات c99 در کامپایلرهایی مثل Borland و ++Visual C برای زبان C تا کنون پیاده سازی نشده است، اما در GCC با توجه به کاربرد بیشتر زبان C در لینوکس اکثر آن پیاده سازی شده است (در نتیجه به همین شکل در نسخه minGW تحت ویندوز آن)، از جمله همین امکانات تعریف متغیر هاست.

تیم فنی مایکروسافت اعلام کرده است که تا زمانی که مشتریان ما نیاز به آن نداشته باشند و این قابلیت ها را برای C تقاضا نکنند همچنان آن ها را پیاده سازی نمی کنیم. در مقالاتی نیز با نظر سنجی از مشتریان اعلام کرده است که با استاندارد بعدی برخی از موارد که مشتریان بیشتر درخواست کرده اند پیاده سازی خواهد شد.