PDA

View Full Version : آیا کامپایلر 6++VC یک کامپایلر استاندارد است؟



alamate_aoal
جمعه 30 مرداد 1388, 02:06 صبح
آیا کامپایلر 6++VC یک کامپایلر استاندارد زبان C است؟:عصبانی++:

اگر هست چرا ماکروی استاندارد __STDC__ در آن تعریف نشده است ؟:متفکر:
اگر نیست چرا تا این حد پر کاربرد است(نسبت به سایر کامپایلرها)؟:متفکر:

pswin.pooya
جمعه 30 مرداد 1388, 09:56 صبح
اگه اشتباه نکنم این define برای زبان سی هستش نه C++ . به همین علت هم تعریف نشده ( داخل VC++9 هم همین شکلی هستش)

Nima_NF
جمعه 30 مرداد 1388, 11:41 صبح
همان طور که دوستان هم اشاره کردند، این ماکرو در کامپایلر ++visual C اگر در حالت ++C کامپایل می کنید تعریف نشده است،
پس باید پروژه را در حالت C کامپایل کنید و سوییچ /Za را نیز فعال کنید (یا همان Disable Language Extensions در قسمت language در منوی project/Option)

ضمنا دو نکته:
1- به خاطر داشته باشید که استاندارد زبان C با زبان ++C متفاوت هست، اگر در حالت C برنامه می نویسید در حالت C هم کامپایل کنید تا طبق استاندارد های آن کامپایل کنید.

2- کامپایلر gcc تمام تلاش خود را در پیاده سازی آخرین نسخه استاندارد C می کند و کامپایلر ++Visual C تمام تلاش خود را برای پیاده سازی آخرین استاندارد ++C می کند.
البته این به این معنی نیست که ـن ها را پیاده سازی نمی کنند، بلکه با توجه به نیروی کاری محدودشان و تعداد مشتریانشان، اولویت در پیاده سازی را به دو مورد فوق اختصاص می دهند. و شاید با چند سال تاخیر قابلیت های آخرین استاندارد را پیاده سازی کنند.

در مورد gcc این مورد استثنا هست که در C++ غیر فعال نشده است، و حتی در اسناد gcc بیان شده است که در سایر کامپایلرها در زبان ++C این مورد تعریف نشده است و خود gcc ترجیح داده است که تعریف شده باقی گذارد.