Завершите noob до C
, только начав с какого-то безделья, задаваясь вопросом, как (читайте ", если "), возможно следующее:
Попытка создать struct
с членом, который является указателем на функцию, а указатель на функцию указывает на функцию, которая принимает аргумент того же типа, что и вышеупомянутый struct
.Например (обратите внимание на синтаксис, просто ознакомьтесь здесь):
typedef struct{
void (*myStructFunc)(void);
} MyStructType;
void myFunc(void){
printf("Hello world!");
}
// ...
MyStructType myStruct;
myStruct.myStructFunc = &myFunc;
myStruct.myStructFunc(); // <= Hello world!
Этот работает нормально, но когда я пытаюсь ввести аргументы типа MyStructType
для функции:
typedef struct{
void (*myStructFunc)(*MyStructType); // <= parse error
} MyStructType;
void myFunc(MyStructType *myStruct){
printf("Hello world!");
}
// ...
MyStructType myStruct;
myStruct.myStructFunc = &myFunc;
myStruct.myStructFunc(&myStruct);
Эти примеры являются краткими по очевидным причинам, но они иллюстрируют мои намерения.Опять же, просто намочив ноги с помощью C
, поэтому, пожалуйста, простите за любое синтаксическое невежество.
В любом случае, как мне этого добиться?Ясно, что я делаю что-то неправильно синтаксически, или, возможно, я пытаюсь сделать что-то, что просто невозможно.
Также обратите внимание, что причина этого чисто академическая.