کامپایلرهای جایگزین C و کابوس هدرهای غیراستاندارد
نوشتن یه کامپایلر C جدید یعنی برخورد با هدرهایی که پر از اکستنشنهای اختصاصی GCC و Clang هستن. از glibc تا SDL و OpenBSD libc و bionic اندروید، همه بهنوعی فرض میکنن که کامپایلر شما یا GCCه یا Clang. راهحلهای واقعبینانه یا پچکردن کدهای ثالثه، یا تظاهر به GCC بودن — دقیقاً همون کاری که Clang انجام میده.
این محتوا بهصورت خودکار با استفاده از هوش مصنوعی تولید شده است. بررسی نهایی آن پیش از استفاده توصیه میشود و مسئولیت استفاده از آن بهعهده کاربر است. برای مطالعه متن اصلی خبر،اینجا را کلیک کنید
خلاصهٔ کاملتر
هر کسی که C نوشته باشه میدونه که کد کاملاً منطبق با استاندارد ISO C تقریباً وجود نداره. اکثر کدهای دنیای واقعی به رفتارهای غیراستاندارد و اکستنشنهای زبانی تکیه دارن — نه الزاماً برای قابلیتهای اضافه، بلکه برای دور زدن باگها و خلأهای کامپایلرها و کتابخانههای مختلف. نویسندهی این مقاله در حال توسعهی کامپایلر C مستقل خودشه و این موارد رو از نزدیک تجربه کرده.
glibc اولین مانع جدیه. فایل sys/cdefs.h که بهطور غیرمستقیم توسط هر هدر libc اینکلود میشه، پر از چکهای پیشپردازنده برای ماکروهای اختصاصی کامپایلره. برای مثال، اگه کامپایلر شما نه GCC باشه، نه Clang، و نه TCC، این کد attribute رو بهکلی نادیده میگیره — حتی اگه کامپایلرتون واقعاً این اتریبیوت رو پشتیبانی کنه:
خلاصهٔ کاملتر این خبر رو میتونی با داشتن اشتراک ویژه بخونی!
اشتراک رایگان
- دسترسی به خلاصهٔ کوتاه خبر
- دسترسی به خلاصهٔ کامل/اختصاصی خبر + نکات کلیدی
- ارسال اخبار مورد علاقه به ایمیل شما
- ارسال اخبار مورد علاقه به تلگرام شما
- عدم نمایش تبلیغات
اشتراک ویژه
- دسترسی به خلاصهٔ کوتاه خبر
- دسترسی به خلاصهٔ کامل/اختصاصی خبر + نکات کلیدی
- ارسال اخبار مورد علاقه به ایمیل شما
- ارسال اخبار مورد علاقه به تلگرام شما
- عدم نمایش تبلیغات




