Chỉ thị tiền xử lý điều kiện cho phép giữ lại hoặc loại bỏ các dòng mã nguồn tuỳ theo một macro có được định nghĩa hay không. Xét tập con đơn giản gồm 4 chỉ thị, xuất hiện thành các cặp không lồng nhau (không có #ifdef/#ifndef nào nằm trong một #ifdef/#ifndef khác):
#ifdef TÊN — giữ các dòng tiếp theo (đến #else hoặc #endif tương ứng) nếu TÊN nằm trong tập macro đã định nghĩa.#ifndef TÊN — giữ các dòng tiếp theo nếu TÊN không nằm trong tập macro đã định nghĩa.#else — đảo ngược điều kiện giữ/loại của khối hiện tại (tuỳ chọn, có thể không xuất hiện).#endif — kết thúc khối điều kiện.Các dòng không phải chỉ thị là dòng mã nguồn thông thường, được giữ nguyên nếu nằm ngoài mọi khối điều kiện, hoặc giữ/loại theo quy tắc trên nếu nằm trong khối.
Hãy in ra mã nguồn sau khi xử lý (loại bỏ mọi dòng chỉ thị, chỉ giữ lại các dòng mã nguồn được kích hoạt), theo đúng thứ tự ban đầu.
Ví dụ: Với macro đã định nghĩa {DEBUG} và chương trình #ifdef DEBUG / log(x) / #else / prod(x) / #endif, kết quả in ra chỉ có dòng log(x).
#ifdef TÊN, #ifndef TÊN, #else, #endif, hoặc dòng mã nguồn bất kỳ khác không rỗng). Dữ liệu đảm bảo các cặp #ifdef/#ifndef ... #endif hợp lệ, không lồng nhau, mỗi khối có tối đa một #else.In ra các dòng mã nguồn còn được giữ lại, theo đúng thứ tự, mỗi dòng một dòng. Nếu không có dòng nào được giữ, không cần in dòng nào (in ra chuỗi rỗng).
Ví dụ:
Đầu vào:
1
DEBUG
4
#ifdef DEBUG
log(x)
#endif
done
Đầu ra:
log(x)
done
Đầu vào:
0
3
alpha
beta
gamma
Đầu ra:
alpha
beta
gamma
Đang tải editor...