Я довольно сильно запутался в указателях в структурах. У меня есть кусок кода, который я действительно не понимаю полностью еще, код:Указатель структуры
typedef struct{
int fildes // basic file descriptor
char* location // location would be somewhere in /dev/tty*
}context0; // structure named 'context' containing the 2 elements above.
context0 someContext; // create a context struct
process(&readLocation); // takes reference from the function 'readlocation'
// i do not know what this process function does.
uint_16_t readLocation(int8_t *buffer, int16_t n, SomeContext){ // buffer pointer, n size read, and fidles
context0 foo = *(context0*) SomeContext; // ???? What Is Going ON right here ????
return read(foo.fd, buffer, n);
}
Я изменил некоторые из имен, но его код, который я не в полной мере понять.
Некоторые вопросы:
поскольку
readLocation
функция передается в качестве ссылки не должен он быть определен какvoid*
? infront ofuint_32_t
главный вопрос: что делает
context0 foo = * (context0*) SomeContext;
?
Это не действительный кусок кода C++. «SomeContext» должен быть типом или переменной. Если это переменная, что такое тип ts? –
someContext - это структура типа context0, если будет добавлен другойконтекст someContext, можно рассматривать как контекст для последовательного ввода, где считывается, а другойContext будет последовательным выходом, где будет записано значение – iBeyondPower
. В противном случае: вопрос 1: нет, любой тип функции может быть передан как параметр. вопрос 2: это похоже на приведение к типу указателя 'context0 *' и разыменование. (Но, как я уже сказал, это не действительный код в первую очередь.) –