ПОРЯДОК ПРИВЕДЕНИЯ ТИПОВ УКАЗАТЕЛЕЙ В СИ (изменения типов)
Primary tabs
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); // приводим к типу нашей структуры , данные расположенные по адресу указателя
- Log in to post comments
- 4229 reads