我有一个问题,我不知道是否有解决方案(用C语言)......
我想组合一个带有typeof“function”的宏来获取编译时类型的名称(因为C我不使用polimorphism和其他类型的抽象,这对于编译器来说很难完成任务)。
我的问题:这似乎是不可能的,我每次都尝试,我只会获得像
这样的想法可以这样做吗?它仅用于实验,但我认为在许多代码中使用可能会很有趣。
提前致谢:)
答案 0 :(得分:3)
简短的回答:你不应该。 typeof()是C语言的GCC扩展,它不可移植。
无论如何,如果你仍想使用它,你就无法按照你的描述去做。 David Thornley的回答解释了你的原因。
答案 1 :(得分:3)
C和C ++有多个编译阶段,后期生成的信息不适用于早期阶段。宏替换相对较早,传统上是预处理器的一部分。 typeof()
,如果您正在使用实现具有此类扩展的C的系统,则将适用于文字或变量的类型。在解析预处理器的内容后,该信息将在稍后阶段生成。
因此,您不会拥有可以在宏中使用的typeof()
信息,并且您必须找到另一种方法来执行您想要做的事情(比如C ++模板?)。
答案 2 :(得分:0)
我假设你在谈论GCC的typeof
- 构建对C的扩展。
不幸的是,我认为它不会对你要做的事情有所帮助 - 它不是一个运营商,它没有评估到某种价值。
它只能在某些情况下使用,并且(据我所知)它与预处理器无关:
可以在任何可以使用typedef名称的地方使用typeof-construct
答案 3 :(得分:0)
gcc有gcc typeof keyword
。使用它你不再编译C,但有些不同的东西很像C但不完全是C。
使用风险自负。
答案 4 :(得分:0)