GCC — точное местоположение объявления типа

У меня есть код C ++, который зависит от libuv библиотека (код C). Это сбой из-за segfault. Я сузил проблему: libuv использования struct stat от <sys/stat.h>, Если я напечатаю размер этой структуры в моем коде:

printf("struct stat size: %d\n", sizeof(struct stat));

это показывает 88. Если я печатаю то же самое в библиотеке libuv, это показывает 96. Это причина segfault. Я немного застрял здесь. Как я могу найти точное местоположение объявления типа? Любой другой подход к решению этой проблемы?

1

Решение

Вы можете предварительно обработать источник с cc -E xxx.cи найдите там оскорбительное определение. #file а также #line директивы в предварительно обработанных xxx.i укажет вам приблизительное положение преступника. Или просто #include <sys/stat.h> в самом начале (перед любыми вещами из библиотеки) компилятор должен кричать на вас за переопределение struct 😉

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]