void * 변수를 함수포인터로 캐스팅하는 방법은?

ㅡ,.ㅡ;;의 이미지

캐스팅될꺼같은데 하는법을 모르겠군요.
아시는분..

new5244의 이미지

함수에 따라 틀린데...
int test(int a, char *b, int c) 형태로 casting 하면

((int (*)(int, char *, int))ptr)(a, b, c)

이렇게..

뭐 비슷하게 하면 됩니다.

from saibi

cinsk의 이미지

void *를 보통 generic pointer라고 합니다만, 이는 일반적인 data를 가리키는 포인터이지, 함수 포인터를 가리키는 포인터로 쓰일 수 있는 것은 아닙니다.

보통은 void (*)(void)등의 함수 포인터를 선언해 놓고, 여기에 (캐스팅을 해서) 함수 포인터를 대입한 다음, 원할 때 (다시 원래의 함수 포인터로 캐스팅해서) 쓰는 것이 좋습니다.

ㅡ,.ㅡ;;의 이미지

new5244 wrote:
함수에 따라 틀린데...
int test(int a, char *b, int c) 형태로 casting 하면

((int (*)(int, char *, int))ptr)(a, b, c)

이렇게..

뭐 비슷하게 하면 됩니다.


감솨.


----------------------------------------------------------------------------

익명 사용자의 이미지

과거 MS-DOS가 수행중일때, 메모리 보호가 없을때(임의의 주소를 사용 가능할때), 부팅시키는 프로그램이지요.
지금은 좀... 이지만, 한때 유망했던 볼랜드 C 컴파일러 버전입니다.
돌려볼 환경이나 있을런지...

* Warm부트는 도스의 리부팅(?) 인터럽트를 호출하는것이고,
* 하드부트는 바이오스 의 부트 시작 코드를 맵핑해서 호출하는 것입니다.

/* 도스에서만 도는 코드 */ 
int main (int argc, char *argv[])
{
    void (far *bootsystem) (void);

    if ((toupper (argv[1][0]) == 'W')
       || (toupper (argv[1][0]) == 'S'))
        { 
           unsigned far *warm;
           warm = MK_FP (0x0000, 0x0472);
           *warm = 0x1234;
           puts ("\nWarm boot in progress...\n");
       }
    else     
         puts ("\nCold boot in progress...\n");
    bootsystem = MK_FP (0xFFFF, 0x0000); //주소값을 직접 입력하는 매크로; 이 주소는 x86 CPU리셋이 걸리면(전원오면), 최초 리얼모드이고, CS:IP가 가리키는 주소.
    
    (*bootsystem) (); // 음 ...
    return (0);
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.