有没有办法在C中打印出变量/指针的类型?

时间:2010-01-29 08:06:48

标签: c types

我想在程序中打印出(或以其他方式确定)某些变量的类型。有没有好办法呢?好的,我的意思是一种有效的方式,即使它意味着故意抛出编译器错误。

例如:

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

5 个答案:

答案 0 :(得分:52)

我刚刚发现了如何做到这一点。

printf("%d", variable);

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

如果你正在使用gcc或gcc兼容的编译器,那么你可以使用(显然是非标准和非便携式)typeof关键字,它的工作方式与sizeof类似。

答案 3 :(得分:1)

在C中,您在声明变量时提供类型。这是编译器抱怨赋值时唯一的信息(也就是说,它不会使用对象的运行时类型,而是使用静态类型)。

转到代码,找到第55行,检查哪些变量并在代码中找到类型。在C中甚至没有重载,类型是静态的和简单的,因为它可以用任何语言。

答案 4 :(得分:0)

如果您使用&:hover { color:yellow; } 进行调试。 然后可以使用以下命令设置断点: gdb中断您要获取该变量类型的执行。 从那时起,您可以使用以下命令在gdb中打印变量的类型: break line_number 要么 ptype your_variable_name 最后一个将打印变量的类型以及您给它的定义。