کلنگ (کامپایلر)

کلَنگ (به انگلیسی: Clang) یک مترجم روبه جلو برای زبان‌های برنامه‌نویسی C و ++C و Objective-C و ++Objective-C می‌باشد که از LLVM به عنوان زیر ساخت روبه عقب استفاده می‌کند. آرمان کلنگ این است که جایگزین کامپایلر جی‌سی‌سی شود. کلنگ به صورت کاملاً متن باز توسعه میابد و توسط کمپانی‌های بزرگی مانند گوگل و اپل پشتیبانی می‌شود. کلنگ تحت پروانه متن باز دانشگاه ایلینوی ارائه می‌گردد. در توسعه کلنگ سعی شده تا حد امکان با جی‌سی‌سی سازگار باشد. بیشتر گزینه‌ها و پارامترهای خط فرمانی مشابه جی‌سی‌سی هستند. توسعه‌دهندگان پروژه فری‌بی‌اس‌دی به دلیل مشکلات حقوقی با پروانه جی‌پی‌ال، قصد دارند کلنگ را با جی‌سی‌سی جایگزین کنند.

کلنگ
نویسنده(های) اصلیکریس لاتنر و دیگران
توسعه‌دهنده(ها)اپل و گوگل و دیگران
انتشار پایدار
۱۰.۰.۰
۲۴ مارس ۲۰۲۰ (۲۰۲۰-۰۳-24)
مخزن
نوشته‌شده باسی++
سیستم‌عاملشبه یونیکس
بن‌سازه رایانشچند سکویی
گونهکامپایلر
پروانهپروانه متن‌باز دانشگاه ایلینوی - UIUC (پروانه‌های بی‌اس‌دی)
وبگاه

مثال از پیام‌های خطا و هشدارها

کد زیر دارای یک خطای منطقی است. چرا که پارامتر اول تابع fgets باید اشاره‌گری به یک رشته باشد ولی در عوض آرگومانی از نوع اشاره‌گری به اشاره‌گر به رشته به آن ارسال شده. این مسئله باعث می‌شود تا کامپایلر یک هشدار چاپ کند.

 #include <stdio.h>

 int main(void)
 {
  char *msg;

  fgets(&msg, BUFSIZ, stdin);

  return 0;
 }

هشدار چاپ شده توسط کلنگ:

 clang -o test.o test.c
 test.c:7:8: warning: incompatible pointer types passing 'char **' to parameter of type 'char *'; remove & [-Wincompatible-pointer-types]
  fgets(&msg, BUFSIZ, stdin);
  ^~~~
 /usr/include/stdio.h:241:30: note: passing argument to parameter here
 char *fgets(char * __restrict, int, FILE * __restrict);
  ^
 1 warning generated.

همانطور که می‌بینید کلنگ دقیقاً محل وقوع خطا را تشخیص داده و اعلام می‌کند که چگونه باید برطرف شود.

جستارهای وابسته

پیوند به بیرون

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.