我已閱讀Tcl_SetHashValue [1]的文檔,但我有一個問題。給定#define NULL 0,TclLib函數Tcl_SetHashValue允許值爲NULL嗎?在TCL 8.4中,TclLib函數Tcl_SetHashValue的允許值爲NULL,給定#define NULL 0?
換句話說,鑑於
#define NULL 0
做了Tcl_SetHashValue調用像下面有一個定義的行爲?
Tcl_SetHashValue(someHashEntry, NULL);
如果行爲被定義,那麼行爲是什麼?例如,如果執行此代碼
Tcl_HashTable myhash;
char *key_arg = 0;
Tcl_HashEntry *entry_arg;
ClientData val_arg;
Tcl_HashEntry *pEntry ;
char *pValue ;
Tcl_InitHashTable(&myhash, TCL_STRING_KEYS);
// store data
key_arg = "someKey";
entry_arg = Tcl_CreateHashEntry(&myhash, key_arg, &isEntryNew);
val_arg = NULL ;
Tcl_SetHashValue(entry_arg, val_arg);
// retrieve data
pEntry = Tcl_FindHashEntry(pArgs, criteria);
if (pEntry)
{
pValue = Tcl_GetHashValue(pEntry) ;
}
上述代碼執行後,pEntry和pValue會包含什麼?
1 - http://www.tcl.tk/man/tcl8.4/TclLib/Hash.htm