在C头文件中,tclPlatDecls.h在哪里定义了TclPlatStubHooks?

时间:2013-12-11 20:39:26

标签: c tcl tk

我将tcl / tk C标头移植到D并且我遇到了似乎没有在任何地方定义的类型。在文件tclPlatDecls.h内,有以下定义:

typedef struct TclPlatStubs {
    int magic;
    struct TclPlatStubHooks *hooks;

#ifdef __WIN32__ /* WIN */
    TCHAR * (*tcl_WinUtfToTChar) (CONST char *str, int len, Tcl_DString *dsPtr); /* 0 */
    char * (*tcl_WinTCharToUtf) (CONST TCHAR *str, int len, Tcl_DString *dsPtr); /* 1 */
#endif /* WIN */
#ifdef MAC_OSX_TCL /* MACOSX */
    int (*tcl_MacOSXOpenBundleResources) (Tcl_Interp *interp, CONST char *bundleName, int hasResourceFile, int maxPathLen, char *libraryPath); /* 0 */
    int (*tcl_MacOSXOpenVersionedBundleResources) (Tcl_Interp *interp, CONST char *bundleName, CONST char *bundleVersion, int hasResourceFile, int maxPathLen, char *libraryPath); /* 1 */
#endif /* MACOSX */
} TclPlatStubs;

我找不到TclPlatStubHooks的定义。知道这是哪里吗?我已经对整个代码库进行了深入研究,并且没有任何定义。即使在网上搜索也没有结果。

1 个答案:

答案 0 :(得分:2)

对于它的价值,我会确认您的grep正在运作,我在版本8.5.158.4.20中只找到了一个引用。

可能感兴趣的是,在8.6.1中,定义更改为void *,如下所示。

typedef struct TclPlatStubs {
    int magic;
    void *hooks;

#if defined(__WIN32__) || defined(__CYGWIN__) /* WIN */
    TCHAR * (*tcl_WinUtfToTChar) (const char *str, int len, Tcl_DString *dsPtr); /* 0 */
    char * (*tcl_WinTCharToUtf) (const TCHAR *str, int len, Tcl_DString *dsPtr); /* 1 */
#endif /* WIN */
#ifdef MAC_OSX_TCL /* MACOSX */
    int (*tcl_MacOSXOpenBundleResources) (Tcl_Interp *interp, const char *bundleName, int hasResourceFile, int maxPathLen, char *libraryPath); /* 0 */
    int (*tcl_MacOSXOpenVersionedBundleResources) (Tcl_Interp *interp, const char *bundleName, const char *bundleVersion, int hasResourceFile, int maxPathLen,   char *libraryPath); /* 1 */
#endif /* MACOSX */
} TclPlatStubs;

也许你可以将其视为void *