Tôi muốn làm tương đương với các nội dung sau:Có thể cho các macro tiền xử lý C chứa các chỉ thị tiền xử lý không?
#define print_max(TYPE) \
# ifdef TYPE##_MAX \
printf("%lld\n", TYPE##_MAX); \
# endif
print_max(INT);
Bây giờ #ifdef
hoặc bất kỳ chỉ thị tiền xử lý lồng nhau được không được phép như xa như tôi có thể nhìn thấy trong một chức năng vĩ mô. Bất kỳ ý tưởng nào?
Cập nhật: Vì vậy, có vẻ như điều này là không thể. Ngay cả một hack để kiểm tra tại thời gian chạy có vẻ không thể thực hiện. Vì vậy, tôi nghĩ rằng tôi sẽ đi với một cái gì đó như:
#ifndef BLAH_MAX
# define BLAH_MAX 0
#endif
# etc... for each type I'm interested in
#define print_max(TYPE) \
if (TYPE##_MAX) \
printf("%lld\n", TYPE##_MAX);
print_max(INT);
print_max(BLAH);