Trong ngôn ngữ lập trình C, một số chỉ thị (directives) kiểm soát việc biên dịch chọn lọc các phần của mã chương trình. Chúng bao gồm:
- #if
- #else
- #elif
- #endif
Dạng chung của #if:
#if bieu_thuc_hang_so chuong_trinh_con #endif
#else hoạt động rất giống từ khóa else của C.
#elif nghĩa là "else if" và thiết lập chuỗi biên dịch if else-if.
Trong số những điều khác, #if cung cấp phương pháp thay thế để "comment out" mã.
Ví dụ:
#if 0 printf("#d", total); #endif
Ở đây, trình biên dịch sẽ bỏ qua printf("#d", total);.
#ifdef và #ifndef
#ifdef nghĩa là "if defined" (nếu đã định nghĩa), và kết thúc bằng #endif.
#ifndef nghĩa là "if not defined" (nếu chưa định nghĩa).
#undef
#undef xóa một định nghĩa đã được định nghĩa trước đó.
#line
#line thay đổi nội dung của __LINE__ (chứa số dòng của mã đang biên dịch) và __FILE__ (chuỗi chứa tên file nguồn đang biên译). Cả hai đều là định danh được định nghĩa sẵn trong trình biên dịch.
#pragma
Chỉ thị #pragma là chỉ thị tùy thuộc triển khai (implementation-defined) cho phép đưa ra các chỉ thị khác nhau cho trình biên dịch.
Ví dụ
Chương trình C minh họa #ifdef, #ifndef, #else và #endif:
#include#define a 10 void main(){ #ifdef a printf("\n Hello I am here.."); #endif #ifndef a printf("\n Not defined "); #else printf("\n R u There "); #endif }
Kết quả
Khi chạy chương trình trên, kết quả:
Hello I am here.. R u There