Tôi có một chương trình C có nhiều tối ưu hóa có thể được bật hoặc tắt với #define
s. Khi tôi chạy chương trình của mình, tôi muốn biết những macro nào đã được định nghĩa trong thời gian biên dịch.In tên và giá trị của macro
Vì vậy, tôi đang cố viết hàm macro để in giá trị thực của macro. Một cái gì đó như thế này:
SHOW_DEFINE(X){\
if(IS_DEFINED(X))\
printf("%s is defined and as the value %d\n", #X, (int)X);\
else\
printf("%s is not defined\n", #X);\
}
Tuy nhiên tôi không biết làm thế nào để làm cho nó làm việc và tôi nghi ngờ nó không phải là có thể, không ai có một ý tưởng về làm thế nào để làm điều đó?
(Lưu ý rằng đây phải lập ngay cả khi vĩ mô không được định nghĩa!)
Được chấp nhận cho câu trả lời m4. Điều này trở nên dễ dàng khi bạn thêm một bước tiền xử lý khác. Tôi đã làm SHOW_DEFINE (X, Y, Z ...) thậm chí còn tốt hơn. Tuy nhiên nó làm cho cảm giác bởi vì tôi cần m4 cho các chất liệu khác. – Ben