در زبان C، کامنت یا نظرنوشته متنی است که توسط برنامهنویس برای توضیح کد نوشته میشود، اما کامپایلر آن را نادیده میگیرد و هیچ تأثیری روی اجرای برنامه ندارد . کامنتها ابزاری ضروری برای مستندسازی کد، توضیح منطق پیچیده، و افزایش خوانایی برنامه برای خود برنامهنویس و دیگران هستند.
از دو اسلش جلو (//) برای شروع یک کامنت استفاده میشود. هر چیزی که بعد از // در همان خط بیاید، تا پایان خط، بهعنوان کامنت در نظر گرفته میشود:
#include <stdio.h> int main() { // این یک کامنت تکخطی است printf("Hello World\n"); // کامنت میتواند بعد از کد نیز قرار گیرد return 0; // بازگشت به سیستمعامل }
کامنتهای تکخطی در استاندارد C99 به زبان اضافه شدند و در کامپایلرهای مدرن بهخوبی پشتیبانی میشوند .
با یک /* شروع و با یک */ خاتمه مییابند. هر چیزی بین این دو علامت، حتی اگر چندین خط را پوشش دهد، کامنت محسوب میشود:
#include <stdio.h> int main() { /* این یک کامنت چندخطی است که میتواند چندین خط را پوشش دهد */ printf("Hello World\n"); /* کامنت چندخطی میتواند در میانهٔ کد نیز قرار گیرد */ return 0; }
نکته مهم: کامنتهای چندخطی را نمیتوان تودرتو (Nested) کرد. بهعنوان مثال، کد زیر خطای کامپایل ایجاد میکند:
/* شروع کامنت خارجی /* کامنت داخلی */ پایان کامنت خارجی */ // خطا: کامپایلر با اولین */ مواجه میشود
توضیح دادن اینکه یک بخش از کد چه کاری انجام میدهد:
// محاسبهٔ فاکتوریل یک عدد بهصورت بازگشتی int factorial(int n) { if (n <= 1) return 1; // شرط پایه return n * factorial(n - 1); // فراخوانی بازگشتی }
برای پیدا کردن خطاها، میتوان بخشهایی از کد را بهصورت موقت کامنت کرد:
int main() { int x = 10; int y = 20; // int result = x + y; // این خط موقتاً غیرفعال شده printf("Values: %d, %d\n", x, y); return 0; }
برای کدهایی که منطق پیچیدهای دارند، توضیح مرحلهبهمرحله بسیار مفید است:
/* الگوریتم جستجوی دودویی (Binary Search) آرایه باید از قبل مرتب شده باشد */ int binary_search(int arr[], int size, int target) { int left = 0; int right = size - 1; while (left <= right) { int mid = left + (right - left) / 2; // جلوگیری از سرریز if (arr[mid] == target) return mid; // عنصر پیدا شد if (arr[mid] < target) left = mid + 1; // جستجو در نیمهٔ راست else right = mid - 1; // جستجو در نیمهٔ چپ } return -1; // عنصر پیدا نشد }
کامنتها باید دلیل و چرایی کد را توضیح دهند، نه اینکه صرفاً کد را تکرار کنند:
// ❌ کامنت بد: تکرار کد int counter = 0; // متغیر شمارنده را صفر کن // ✅ کامنت خوب: توضیح منطق int counter = 0; // شمارندهٔ تعداد آیتمهای پردازششده که از صفر شروع میشود
در حین توسعه، از کامنتهای خاص برای یادآوری کارهای آینده استفاده میشود:
// TODO: افزودن مدیریت خطا برای ورودیهای خالی // FIXME: این حلقه برای آرایههای بزرگ بسیار کند است
در ابتدای فایلهای .c یا .h، معمولاً اطلاعاتی دربارهٔ فایل نوشته میشود:
/*
* file: calculator.c
* author: Ali Rezaei
* date: 2026-07-27
* desc: توابع اصلی ماشینحساب شامل جمع، تفریق، ضرب و تقسیم
*/
در برخی موارد خاص، میتوان از کامنتها برای ساختارهای شرطی استفاده کرد، اما این روش توصیه نمیشود و استفاده از #ifdef و #endif بهتر است:
// روش ضعیف: /* #define DEBUG_MODE */ #ifdef DEBUG_MODE printf("Debug: x = %d\n", x); #endif
ابزارهایی مانند Doxygen از کامنتهای خاص برای تولید مستندات استفاده میکنند:
/** * @brief جمع دو عدد صحیح * @param a عدد اول * @param b عدد دوم * @return حاصل جمع a و b */ int add(int a, int b) { return a + b; }
کامنتها در دستورات پیشپردازنده (#define, #include و غیره) نیز مجاز هستند:
#define PI 3.14159 // مقدار عدد پی #include <stdio.h> // کتابخانهٔ ورودی/خروجی استاندارد
/* *//* کامنت اول /* کامنت دوم */ // اینجا کامنت اول تمام میشود! این بخش دیگر کامنت نیست و باعث خطا میشود */
// در استانداردهای قدیمیدر استاندارد C89 (ANSI C)، کامنتهای // پشتیبانی نمیشوند. اگر با کامپایلرهای بسیار قدیمی کار میکنید، فقط از /* */ استفاده کنید .
*/اگر بخواهید کدی را که خودش حاوی */ است کامنت کنید، با مشکل مواجه میشوید:
/* char *str = "Hello */ World"; // اینجا کامنت بهاشتباه تمام میشود */
راهحل: در چنین مواردی، از کامنتهای // برای هر خط استفاده کنید یا کاراکترهای مشکلساز را اصلاح کنید.
کامنتها توسط کامپایلر نادیده گرفته میشوند و فقط برای برنامهنویسان مفید هستند
دو نوع کامنت در C وجود دارد: تکخطی (//) و چندخطی (/* */)
کامنتهای چندخطی را نمیتوان تودرتو کرد
از کامنتها برای توضیح چرایی کد استفاده کنید، نه صرفاً تکرار آنچه کد انجام میدهد
کامنتهای // از استاندارد C99 بهبعد پشتیبانی میشوند
برای مستندسازی حرفهای، از ابزارهایی مانند Doxygen و کامنتهای مخصوص آن استفاده کنید
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات