편집하면 당신의 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> |
|
| |
|