کاربر گزینه /TC در کامپایلر VC++
#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 مکان معرفی متغیر ها حتما باید در ابتدای هر تابع باشد؟
نقل قول: کاربر گزینه /TC در کامپایلر VC++
بله
در کتاب ریچی و کرینگان هم گفته شده:
نقل قول:
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 هست یا نه)
نقل قول: کاربر گزینه /TC در کامپایلر VC++
قابلیت تعریف متغیر در میان دستورات از استاندارد c99 به زبان C اضافه شده است که با توجه به کاربرد کم C نسبت به ++C در ویندوز بسیاری از امکانات c99 در کامپایلرهایی مثل Borland و ++Visual C برای زبان C تا کنون پیاده سازی نشده است، اما در GCC با توجه به کاربرد بیشتر زبان C در لینوکس اکثر آن پیاده سازی شده است (در نتیجه به همین شکل در نسخه minGW تحت ویندوز آن)، از جمله همین امکانات تعریف متغیر هاست.
تیم فنی مایکروسافت اعلام کرده است که تا زمانی که مشتریان ما نیاز به آن نداشته باشند و این قابلیت ها را برای C تقاضا نکنند همچنان آن ها را پیاده سازی نمی کنیم. در مقالاتی نیز با نظر سنجی از مشتریان اعلام کرده است که با استاندارد بعدی برخی از موارد که مشتریان بیشتر درخواست کرده اند پیاده سازی خواهد شد.