GCC-类型声明的确切位置

GCC - exact location of type declaration

本文关键字:位置 类型 声明 GCC-      更新时间:2023-10-16

我有一个C++代码,它依赖于libuv库(C代码)。它因为segfault而崩溃了。我缩小了问题范围:libuv从<sys/stat.h>使用struct stat。如果我在代码中打印这个结构的大小:

printf("struct stat size: %dn", sizeof(struct stat));

它显示88。如果我在libuv库中打印相同的内容,它显示96。这就是segfault的原因。我有点困在这里了。如何找到类型声明的确切位置?有其他方法可以解决这个问题吗?

您可以使用cc -E xxx.c预处理源代码,并在其中查找有问题的定义。经过预处理的xxx.i中的#file#line指令将指向罪魁祸首的大致位置。或者只是#include <sys/stat.h>在一开始(在库中的任何内容之前),编译器应该为重新定义struct;-)