Tôi có macro sau:C Preprocessor với câu lệnh if
#define IF_TRACE_ENABLED(level) if (IsTraceEnabled(level))
Mã người dùng nên xem xét sau đây:
IF_TRACE_ENABLED(LEVEL1)
{
... some very smart code
}
Sự nhấn mạnh ở đây trên dấu ngoặc nhọn - Tôi muốn để ngăn chặn "nếu" từ macro để "ăn" mã khác:
if (...)
IF_TRACE_ENABLED(LEVEL1)
printf(....);
else
bla bla bla
Trong ví dụ này IF_TRACE_ENABLED
"ăn" khối khác.
Có cách nào để thực thi mã người dùng không biên dịch mà không có hệ thống phanh xoăn hay có khác để xác định macro để đạt được sự an toàn?
Tôi không thấy macro nào cung cấp cho bạn qua câu lệnh if nếu có. – JeremyP
Quên về ví dụ này. Bạn có thể có một điều kiện phức tạp trong 'if' mà bạn không muốn lặp lại mỗi lần. –
@JeremyP: không có nhiều tiện ích trong việc có macro cho ví dụ đơn giản này, nhưng như Nathan cho thấy có thể có sự phức tạp hơn trong macro gỡ lỗi và/hoặc có một số biến thể của macro dựa trên cấu hình xây dựng (cho ví dụ, một phiên bản phát hành luôn luôn đánh giá thành 'false' để các chuỗi dấu vết bị tước khỏi tệp thực thi). –