Ваш код кричит неправильно из-за несоответствий между двумя файлами. В одном из них вы получаете доступ к ptr [0] и ptr [1], в то время как в другом вы получаете доступ к * (ptr + 0) и * (ptr + 1) ... что здесь не является источником ошибки, потому что два синтаксисы означают одно и то же, но использование двух разных форм - это плохой стиль, плохое чтение и подверженность ошибкам. Но затем, в одном файле вы объявляете void **ptr
, а в другом файле вы объявляете void *ptr
- что не может быть правдой, так как два ptr имеют одинаковую семантику (каждый из них указывает на массив из двух элементов TF и как). В одном файле у вас есть функция, которая принимает параметр с именем ptr, но в другом файле вы снова передаете содержимое переменной с именем ptr ..., так как два ptrs имеют одинаковую семантику, это несоответствие Должно быть неправильно, и ясно, что разыменование является неправильным. Удалите это, и вы передадите void**
, так что это должен быть параметр func.
Кодируйте последовательно, и целый класс ошибок исчезнет из вашего кода. Вы можете писать код на 3 года или на 30 лет, но это не имеет значения, если вы не изучите такие основы.