ПОРЯДОК ПРИВЕДЕНИЯ ТИПОВ УКАЗАТЕЛЕЙ В СИ (изменения типов)

Forums:

error #2051: Cast from 'void' to '(incomplete) struct winparams' is illegal.

такая ошибка может быть вызвана в строке типа =

struct winparams strct= (struct winparams ) *lpParam; // приводим к типу нашей структуры , данные расположенные по адресу указателя 

здесь , как мы понимаем, что-то не так с приведением типов

вообще говоря, если у нас есть такая вот переменная

 int Data=0;

и мы ожидаем получить эту переменную в функции потока, то нам необходимо использовать приведение типов вида =

 Data=* ((int*)ipPatam);

(загуглите фразу = "Creating Threads using the CreateThread() API" - найдёте более подробный пример от одного хорошего человека на codeproject.com)
то есть , смотря на последнюю приведённую строчку кода , можно сказать, что

ПОРЯДОК ПРИВЕДЕНИЯ ТИПОВ УКАЗАТЕЛЕЙ В СИ следующий =
сначала требуется привести указатель типа void* к указателю типа "указатель на целое число"(или к тому типу, который вам необходим)- то есть в данном случае int* , у же только потом получить данные , расположенные по адресу, хранящемуся в указателе.

соответственно свою строчку я перепишу в виде =

 struct winparams strct= *((struct winparams*)lpParam); // приводим к типу нашей структуры , данные расположенные по адресу указателя