У меня есть код C ++, который зависит от libuv библиотека (код C). Это сбой из-за segfault. Я сузил проблему: libuv использования struct stat
от <sys/stat.h>
, Если я напечатаю размер этой структуры в моем коде:
printf("struct stat size: %d\n", sizeof(struct stat));
это показывает 88. Если я печатаю то же самое в библиотеке libuv, это показывает 96. Это причина segfault. Я немного застрял здесь. Как я могу найти точное местоположение объявления типа? Любой другой подход к решению этой проблемы?
Вы можете предварительно обработать источник с cc -E xxx.c
и найдите там оскорбительное определение. #file
а также #line
директивы в предварительно обработанных xxx.i
укажет вам приблизительное положение преступника. Или просто #include <sys/stat.h>
в самом начале (перед любыми вещами из библиотеки) компилятор должен кричать на вас за переопределение struct
😉
Других решений пока нет …