درس ۲۱ از ۲۵ · برنامه‌های بزرگ‌تر

ترجمه‌ی شرطی

گاهی کد باید روی ویندوز و لینوکس کمی فرق کند. سلام این تصمیم را در زمان ترجمه می‌گیرد، پس هیچ هزینه‌ای در زمان اجرا ندارد.

اگر در زمان ترجمه

اگر در سطح بالای پرونده، با شرطی که هنگام ترجمه معلوم است، فقط شاخه‌ی درست را در برنامه نگه می‌دارد:

comptime.salam
اگر SALAM_OS_WINDOWS:
    پایا جداکننده := "\\"
وگرنه:
    پایا جداکننده := "/"
پایان

روال ریشه:
    سرچاپ "home" + جداکننده + "salam"
    سرچاپ SALAM_OS != ""
پایان
خروجیhome/salam true

پرچم‌های آماده

  • سیستم‌عامل: SALAM_OS_WINDOWS، SALAM_OS_MAC، SALAM_OS_LINUX، SALAM_OS_UNIX، SALAM_OS_ANDROID، SALAM_OS_WASM
  • پردازنده: SALAM_ARCH_X64، SALAM_ARCH_ARM64، SALAM_ARCH_WASM و…
  • نام متنی: SALAM_OS و SALAM_ARCH، مثلاً "linux" و "arm64"

این نام‌ها در کد معمولی هم مقدارهای ثابتی‌اند و می‌شود آن‌ها را چاپ کرد یا در ترابرد به کار برد.