【发布时间】:2010-09-23 00:52:14
【问题描述】:
我想做相当于以下的事情:
#define print_max(TYPE) \
# ifdef TYPE##_MAX \
printf("%lld\n", TYPE##_MAX); \
# endif
print_max(INT);
现在#ifdef 或任何嵌套的预处理器指令是
据我在函数宏中看到的,不允许。
有什么想法吗?
更新:所以这似乎是不可能的。即使是在运行时检查的 hack 似乎也无法实现。所以我想我会选择类似的东西:
#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);
【问题讨论】:
标签: c macros nested c-preprocessor expansion