【问题标题】:How to implement typeof operator in C如何在 C 中实现 typeof 运算符
【发布时间】:2015-07-20 17:21:46
【问题描述】:

typeof 运算符在 C 中是否可用。如果是,如何实现它。或者是否有我必须使用的头文件?尝试使用 typeof 语句时出现以下错误

  • 未声明的函数'typeof'(你的意思是feof?);假设extern 返回int

【问题讨论】:

  • 有一个 gcc extension 可用,但它并没有像你想象的那样做任何运行时魔法,因为 C 并没有真正具有类型化运行时多态性。你想用它做什么?如果您想弄清楚某物在投射之前是什么类型,则您必须自己跟踪此类信息。
  • 我正在同时学习 C 和 Python。由于它在 Python 中可用,我认为它也可能在 C 中可用。
  • Python 是一种动态类型的解释语言。 C 两者都不是。 Python有类。 C 没有。在 Python 中,您可以使用 typeof 在运行时查找变量的类型。在 C 中,您在编译时就知道变量的类型,因为您必须在源代码中显式声明它们。例如。 C 中的 void foo(int x) 与 Python 中的 def foo(x):
  • Python 有一定程度的language reflection,而 C 没有。反射是一个非常有用的通用概念,它可以帮助您快速浏览哪些语言支持这种功能,哪些不支持。

标签: c typeof


【解决方案1】:

C 是一种比 Python 低得多的语言,几乎没有什么魔力。它适用于低级任务 - Python 的参考实现是用 C 编写的......

即使最近的 C 版本比 1970 年代的旧 K&R C (*) 的容错性差,但规则主要是:如果程序员知道这一点,编译器就不会关心它。例子:

  • 数组:程序员关心大小,编译器只关心起始地址
  • 变量类型:程序员应该知道,编译器只在编译时关心它,但不存储运行时的信息

(*) 确实有编译器强制执行的规则,但主要是在编译时:在运行时程序被剥离到最低限度

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 2011-05-30
    • 2020-08-17
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2023-01-08
    • 1970-01-01
    相关资源
    最近更新 更多