예 : 함수 (즉, ...)와 int를 취하는 함수와 int를 취하는 함수.고유 한 형식의 함수를 인수로 사용하는 함수 포인터를 typedef 할 수 있습니까?
여기에는 (...)
이 재귀 적으로 폭발합니다. 이 작업을 수행 할 수 없거나 다른 구문이 존재한다는 근본적인 이유가 있습니까? 그것은 캐스팅없이 가능해야합니다. 나는 파견 테이블을 지나가려고 정말로 노력하고 있지만,이 하나의 타입을 통과시킬 수 있다면 그것을 알아낼 수 있습니다.
예 : 함수 (즉, ...)와 int를 취하는 함수와 int를 취하는 함수.고유 한 형식의 함수를 인수로 사용하는 함수 포인터를 typedef 할 수 있습니까?
여기에는 (...)
이 재귀 적으로 폭발합니다. 이 작업을 수행 할 수 없거나 다른 구문이 존재한다는 근본적인 이유가 있습니까? 그것은 캐스팅없이 가능해야합니다. 나는 파견 테이블을 지나가려고 정말로 노력하고 있지만,이 하나의 타입을 통과시킬 수 있다면 그것을 알아낼 수 있습니다.
당신은 구조체에 함수 포인터를 포장 할 수 있습니다
struct fnptr_struct;
typedef void (*fnptr)(struct fnptr_struct *);
struct fnptr_struct {
fnptr fp;
};
잘 모르겠어요이 주조를 개선 인 경우. 나는 그것이 구조체 없이는 불가능하다고 생각한다. 왜냐하면 C는 타입이 정의되기 전에 정의되어야하고 typedef에 대해서는 불투명 한 구문이 없기 때문이다.
좋은 해결 방법이 있습니다, 슬픈 "그냥"작동하지 않습니다. 아, 유산. : - / – HostileFork
직접 할 수 없습니다. 유일한 옵션은 함수 포인터 인수가 지정되지 않은 인수를 허용하거나 함수 포인터를 포함하는 구조체에 대한 포인터를 Dave suggested으로 허용하는 것입니다.
// Define fnptr as a pointer to a function returning void, and which takes one
// argument of type 'pointer to a function returning void and taking
// an unspecified number of parameters of unspecified types'
typedef void (*fnptr)(void (*)());
가변 인수가 재귀 적으로 폭발하는지, 아니면 "vararg"가 실제로 이전 인수를 지정하지 않고 "vararg"로 해석 되는가? –
나는 거의 똑같은 질문을 봤지만 찾을 수가 없다. –
http://stackoverflow.com/q/793449/10396 – AShelly