GCC-类型声明的确切位置
GCC - exact location of type declaration
我有一个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
;-)
相关文章:
- 在C++的适当类型定义位置
- 创建一个类来访问和指定向量类型,并构建一个获取位置并为其分配区域的类
- POD 结构(相同类型的成员):成员是否位于连续的内存位置?
- 使用 (c++11) 声明类型时放置 __declspec(dllimport) 关键字的位置
- C++ 在不同位置具有不同数据类型的多维数组
- 即使在同一类型上,也可以将击曲线调用新的位置
- 类型转换的 C++ 指针和非类型转换的指针指向相同的位置,但给出不同的值
- 位置实用程序例程与使用类型相同的命名空间
- 是STD :: Vector,由于其分配运算符移动其成员的位置,因此是一种非常规类型
- C++变量定义中的易失性类型量词位置
- 获取迭代器在基类型 "intrusive doubly linked list" 的指针字典中的位置
- 说明 资源路径位置类型 'UINT16_MAX' 未在此范围内声明
- 变量除了其内容(例如类型、位置)之外,是否还消耗内存
- 指针的两种不同类型的星号位置
- 存储位置和数据类型的表示形式
- 堆栈/堆变量的变量/引用名称或类型存储在内存中的位置
- 标准库中的某个位置已经存在线程安全值类型
- 文件类型以编程关联和文件位置(Windows)
- C/C++:访问给定类型指针的位置与访问另一类型指针的相同位置不同
- MSVC2008为内置类型新增c++位置