【问题标题】:If GCC's typeof() is handled by the preproccesor, why can't it be stringified?如果 GCC 的 typeof() 由 preproccesor 处理,为什么不能将其字符串化?
【发布时间】:2022-06-14 23:51:26
【问题描述】:

我想打印 typeof() 输出的类型,但 typeid 仅在 c++ 中可用。如果这是由预处理器处理的,为什么我不能使用字符串化来获取该类型的名称?

#define GET_STRING(s) #s

#define example(input)                              \
    do {                                            \
        char test[20] = GET_STRING(typeof(input));  \
        printf(test);                               \
    }                                               \
    while (0)                                       \

这将打印出“typeof()”,其中输入字符串化。为什么在检查 typeof() 之前预处理器要字符串化?有没有办法覆盖这种行为?

如果类型像 GET_STRING(int) 一样传递,则可以直接对类型进行字符串化,因此使用 typeof() 应该具有相同的行为。

【问题讨论】:

  • typeof 由预处理器处理?怎么样?
  • 预处理器对类型一无所知。
  • 好的,那么 gcc 在将其发送到预处理器之前对其进行处理?它必须为“typeof(x) var = y”编译。如果是这样,为什么它不字符串化?
  • 为什么以前?你在做一个又一个不合理的假设。编译器在预处理后处理它。

标签: c gcc c-preprocessor c99 stringification


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多