代码之家  ›  专栏  ›  技术社区  ›  Ritwik Bose

是否有方法在C中打印出变量/指针的类型?

  •  23
  • Ritwik Bose  · 技术社区  · 15 年前

    我想打印出(或确定)我程序中某个变量的类型。有什么好办法吗?好的,我指的是一种有效的方法,即使它意味着故意抛出编译器错误。

    例如:

    client.c:55: error: incompatible types in assignment
    

    是我现在犯的错误。我想告诉我的是:

    client.c:55: error: attempting to assign type struct a to type struct b
    

    或者我可以这样使用的函数:

    printf(gettype(x));
    

    将输出:

    struct b
    
    4 回复  |  直到 8 年前
        1
  •  3
  •   manav m-n    15 年前

    尝试使用gdb进行调试,它将打印与变量关联的所有属性,包括变量的类型。但是,您的程序应该在使用gdb之前编译。

        2
  •  51
  •   Ariel    13 年前

    我刚刚发现了怎么做。

    printf("%d", variable);
    

    如果变量不是int,则 gcc -Wall 会抱怨类型不匹配-并打印出变量的类型,这正是您要查找的。

        3
  •  1
  •   Paul R    15 年前

    如果您使用的是gcc或gcc兼容的编译器,那么您可以使用(显然是非标准和不可移植的) typeof 关键字,其工作方式与sizeof非常类似。

        4
  •  1
  •   David Rodríguez - dribeas    15 年前

    在C语言中,当您声明变量时提供一个类型。这是编译器在抱怨分配时拥有的唯一信息(即,它不会使用对象的运行时类型,而是使用您拥有的静态类型)。

    转到代码,找到第55行,检查其中有哪些变量,并找到代码中的类型。在C语言中甚至没有重载,类型就像在任何语言中一样静态和简单。