什么是' thunk'? (在重入排序函数的上下文中,例如:qsort_r)

时间:2015-06-11 15:22:50

标签: c naming-conventions

已经检查过What is a 'thunk'?,我仍然不确定为什么传递给重入qsort_r的额外参数会被称为thunk

例如:(BSD风格qsort_r

void qsort_r(void *base_, size_t nmemb, size_t size, void *thunk,
             int (*compar)(void *, const void *, const void *));

要清楚,我知道论点是什么,以及如何使用它,而不是为什么它被称为thunk(至少在BSD' s qsort_r中)。

1 个答案:

答案 0 :(得分:4)

名称似乎来自original proposed implementation Diomidis Spinellis

implementation表示它仅用作不透明的数据块,通过qsort_r传递回比较函数。

它似乎与this answer中的第三个概念有些匹配。

  

将机器数据从一种特定于系统的形式映射到另一种形式,通常是出于兼容性原因

但实际上,这似乎是一个误导性的名字。我通常认为thunk包含代码块。在这种情况下,它只是上下文的容器。