C (프로그래밍 언어) 편집하기


편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
498번째 줄: 498번째 줄:


====함수포인터====
====함수포인터====
함수 포인터는 말 그대로 함수를 가르키는 포인터이며 이 값은 함수 심볼의 진입 주소가 된다.
주로 플러그인과 같이 동적 라이브러리에서 링킹 없이 동적으로 심볼만 가져다 쓰는 상황에서 주로 사용되며 C에서 객체지향을 흉내낼 때도 사용하는것이 가능하다.
문법은 일반 함수 선언과 비슷하다.
<syntaxhighlight lang='c'>
<반환 자료형> (*<함수 포인터 이름>)(<매개변수>);
</syntaxhighlight>
예를 들어 void* MyFunction(int, void*) 꼴의 함수를 담을 수 있는 함수 포인터는 다음과 같이 선언할 수 있다.
<syntaxhighlight lang='c'>
void* (*MyFunction_ptr)(int, void*);
</syntaxhighlight>
<syntaxhighlight lang='c'>
void* (*MyFunction_ptr)(int, void*) = &MyFunction;
MyFunction_ptr(0, NULL); // MyFunction(0, NULL)과 동일
</syntaxhighlight>
===매크로===
===매크로===


540번째 줄: 521번째 줄:
#endif // BUILD_PRINT_DEBUG_MESSAGE
#endif // BUILD_PRINT_DEBUG_MESSAGE


</syntaxhighlight>
또한 매크로는 코드의 일부가 될 수 있다.
<syntaxhighlight lang='c'>
#include <stdio.h>
#define PROCEDURE(x) int x
#define PRINTHELLOWORLD printf("Hello World!\n");
#define BEGIN {
#define END }
PROCEDURE(main) // int main
(int argc, const char *argv[])
BEGIN // {
    PRINTHELLOWORLD; // printf("Hello World!\n);
    return 0;
END // }
</syntaxhighlight>
</syntaxhighlight>


리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다.
취소 편집 도움말 (새 창에서 열림)

| () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |}