باز کردن منو اصلی

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

کلنگ
LLVM Logo.svg
نویسنده (های) اصلیکریس لاتنر و دیگران
توسعه‌دهنده(ها)اپل و گوگل و دیگران
وضعیت توسعهدر جریان
نوشته‌شده بهسی++
سیستم‌عاملشبه یونیکس
سکوچند سکویی
گونهکامپایلر
پروانهپروانه متن‌باز دانشگاه ایلینوی/ان‌سی‌اس‌ای

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

کد زیر دارای یک خطای منطقی است. چرا که پارامتر اول تابع 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.

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

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

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