이 구문은 어떤 뜻인가요?

lantelt의 이미지

(*(void (*)(struct page *))page->lru.prev)(page);

static inline void put_page(struct page *page)
{
	if (PageCompound(page)) {
		page = (struct page *)page->lru.next;
		if (put_page_testzero(page)) {
			if (page->lru.prev) {	/* destructor? */
				(*(void (*)(struct page *))page->lru.prev)(page);
			} else {
				__page_cache_release(page);
			}
		}
		return;
	}
	if (!PageReserved(page) && put_page_testzero(page))
		__page_cache_release(page);
}
pynoos의 이미지

typedef void (*FUNC)(struct page *);

FUNC * func;

(*func)(page); /* func === page->lru.prev */

이런 의미군요.

page->lru.prev 이 함수 포인터 입니다.

moonzoo의 이미지

typedef void (*FUNC)(struct page *);

위의 구문을 어떤 순서로 해석해야 하나여?

typedef문을 걍 필요할때는 썼는데..위와 같이 쓰니까.

걍 멍~ 하고 헷갈리네여..--;

위와 같은 구문을 해석하는 순서나 방법점 설명해 주시면 감사여.

sliver의 이미지

moonzoo wrote:
typedef void (*FUNC)(struct page *);

위의 구문을 어떤 순서로 해석해야 하나여?

typedef문을 걍 필요할때는 썼는데..위와 같이 쓰니까.

걍 멍~ 하고 헷갈리네여..--;

위와 같은 구문을 해석하는 순서나 방법점 설명해 주시면 감사여.


typedef이 없다고 생각한 상태에서 해석을 한 다음,

그것이 변수나 함수가 아니라 타입이라고 생각하시면 됩니다.

moonzoo의 이미지

아 맞네요..감사여.

linuxs의 이미지

function point 어떤 경우에 사용하는 건가요?

꿈은 이루어진다.

fliers의 이미지

linuxs wrote:
function point 어떤 경우에 사용하는 건가요?

콜백함수 같은것에 사용되지요.