0

コードは次のとおりです。

// Global Definitions/Declarations:

typedef void * LOGHANDLE;

typedef LOGHANDLE (STD_CALL *LogOpen_T)
       (unsigned char *, 
        unsigned char *, 
        unsigned long, 
        unsigned long *);

LogOpen_T LogOpen;

// Inside some function:
    ...
    LogOpen = (LogOpen_T)ImportSymbol(moduleHandle, "LogOpen" );
    if (LogOpen == NULL)
    {
         err = -2;
    }
    ...

がここでどのように使用されているか理解できませんtypedef。説明してください。

4

3 に答える 3

3

typedef自体は、関数が次のように見える関数へのポインターの型エイリアスを定義します。

void * STD_CALL f(unsigned char *, unsigned char *, unsigned long, unsigned long *);

変数LogOpenは、関数への実際のポインターです。後で、の結果はImportSymbol関数へのポインタにキャストされます。

于 2013-09-11T06:25:11.527 に答える
2

LOGHANDLE何でも指すことができるポインタを定義します。 LogOpen_T関数ポインタを定義します。

于 2013-09-11T06:24:29.807 に答える
1

これはプロトタイプの関数へのポインタです

LONGHANDLE functionname
   (unsigned char *, 
    unsigned char *, 
    unsigned long, 
    unsigned long *);

使用例

LOGHANDLE mylogfunction
   (unsigned char *, 
    unsigned char *, 
    unsigned long, 
    unsigned long *){/* code*/}


LogOpen_T function_handle = (LogOpen_T)(&mylogfunction);
于 2013-09-11T06:29:46.130 に答える