我想在程序中打印出(或以其他方式确定)某些变量的类型。有没有好办法呢?好的,我的意思是一种有效的方式,即使它意味着故意抛出编译器错误。
例如:
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
答案 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
最后一个将打印变量的类型以及您给它的定义。