2015-07-14

Build Tix extension package

Tix Widget Set for Tk/Tcl and Python


使用 MSYS/MINGW 來編譯。在 make 的時候發現編譯 tixGrSort.c 會發生錯誤。觀察錯誤訊息以後,應該是要設 flag 否則在 Tcl 8.6,無法直接使用 Tcl_Interp member result。

typedef struct Tcl_Interp
#ifndef TCL_NO_DEPRECATED
{
    /* TIP #330: Strongly discourage extensions from using the string
     * result. */
#ifdef USE_INTERP_RESULT
    char *result TCL_DEPRECATED_API("use Tcl_GetStringResult/Tcl_SetResult");
                /* If the last command returned a string
                 * result, this points to it. */
    void (*freeProc) (char *blockPtr)
        TCL_DEPRECATED_API("use Tcl_GetStringResult/Tcl_SetResult");
                /* Zero means the string result is statically
                 * allocated. TCL_DYNAMIC means it was
                 * allocated with ckalloc and should be freed
                 * with ckfree. Other values give the address
                 * of function to invoke to free the result.
                 * Tcl_Eval must free it before executing next
                 * command. */
#else
    char *resultDontUse; /* Don't use in extensions! */
    void (*freeProcDontUse) (char *); /* Don't use in extensions! */
#endif
#ifdef USE_INTERP_ERRORLINE
    int errorLine TCL_DEPRECATED_API("use Tcl_GetErrorLine/Tcl_SetErrorLine");
                /* When TCL_ERROR is returned, this gives the
                 * line number within the command where the
                 * error occurred (1 if first line). */
#else
    int errorLineDontUse; /* Don't use in extensions! */
#endif
}
#endif /* TCL_NO_DEPRECATED */
Tcl_Interp;

所以我把 source code 改寫為下列的樣子,只是不知道改的對不對。
    order = strtol(Tcl_GetStringResult(sortInterp), &end, 0);
    if ((end == Tcl_GetStringResult(sortInterp)) || (*end != 0)) {

沒有留言: