مجموعه ای از راهنماها وجود دارند که تعیین می کنند آیا خطوط برنامه قبل از تحویل به کامیایلر حذف شوند یا خیر. این راهنماها شامل #if، #elif، #else، #ifdef و ifndef# هستند.
یک بلوک شرطی که با یکی از راهنماهای شرطی شروع می شود حتما باید به endif# ختم شود. بهتر است مقابل عبارت endif# توضیحی باشد که مشخص شود کدام بلوک شرطی بسته شده است.
یکی از کاربردهای راهنماهای شرطی وقتی است که فایل هدری در چند فایل هدر دیگر که باید در برنامه اصلی ضمیمه شوند مورد نیاز است. مشکلی که پیش می آید این است که متغیرها، ثابت ها، کلاس ها و توابع فایل هدر چندبار در برنامه ظاهر خواهند شد که سرباری برای کامپایلر می شود. با پیش پردازنده ها به راحتی می توان تضمین کرد که هر فایل هدر تنها یکبار در برنامه اصلی اضافه می شود. راهنمای (if not defined) #ifndef بلوکی از متن را تنها اگر عبارت خاصی قبلا تعریف نشده باشد اجرا می کند.
کدی که در idndef# ضمیمه می شود تنها یکبار زمانی که فایل لود می شود بار می شود.
_ifndef _FILE_NAME_H_#
_define _FILE_NAME_H_#
/* code */#
_endif // #ifndef _FILE_NAME_H_#
شناسه ای که مقابل ifndef# ذکر می شود لازم نیست حتما مقداری داشته باشد زیرا با اضافه شدن خط define# تعریف می شود.
مثال. تعریف ثابت خاص NULL توسط راهنماهای شرطی.
ifndef NULL#
define NULL (void *)0 #
endif // #ifndef NULL#
مثال. راهنماهای شرطی برای بلوکی که شامل توضیحات چندخطی است و می خواهید همگی توضیحی شوند روش خوبی است.
if 0 #
….. comment */
/*
// code
/* comment */
endif #