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

Rit*_*ose 27 c types

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

例如:

client.c:55: error: incompatible types in assignment
Run Code Online (Sandbox Code Playgroud)

是我现在得到的错误.我想告诉我的是:

client.c:55: error: attempting to assign type struct a to type struct b
Run Code Online (Sandbox Code Playgroud)

或者我可以这样使用的功能:

printf(gettype(x));
Run Code Online (Sandbox Code Playgroud)

哪个会输出:

struct b
Run Code Online (Sandbox Code Playgroud)

Ari*_*iel 57

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

printf("%d", variable);
Run Code Online (Sandbox Code Playgroud)

如果变量不是int,那么gcc -Wall会抱怨类型不匹配 - 并将打印出变量的类型,这正是您正在寻找的.

  • 当使用在传递给`printf`时衰减成指针的数组类型时,这会产生误导. (6认同)

man*_*m-n 6

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

  • 如果构建失败,则无法执行此操作 (3认同)

Kor*_*nee 5

如果您使用gdb. 然后,您可以使用以下命令设置断点: break line_number在要获取该变量类型的位置中断执行。从那时起,您可以使用以下命令在 gdb 中打印变量的类型: ptype your_variable_namewhatis your_variable_name 最后一个将打印变量的类型以及您给出的定义。