私はqsortのさまざまな実装を見てきましたが、ここに見つかったソースにはわかりません(https://code.woboq.org/userspace/glibc/stdlib/qsort.c.html)という行があります。それは関数ポインタ宣言のように見えます。私はどんな助けにも感謝しています。私は必要なだけ多くのコードを記述していますが(私はその行に記されています)、私はその質問に答えると思います。私に知らせてください、ありがとうございました。qsortのCコードの行を説明してください
typedef struct
{
char *lo;
char *hi;
} stack_node;
void _quicksort (void *const pbase, size_t total_elems, size_t size, cmp_t cmp, void *arg)
{
char *base_ptr = (char *) pbase;
const size_t max_thresh = 4 * size;
if (total_elems == 0)
return;
if (total_elems > 4)
{
char *lo = base_ptr;
char *hi = &lo[size * (total_elems - 1)];
stack_node stack[(8 * sizeof(size_t))];
stack_node *top = stack;
/* Line below is a function pointer declaration? Initializes struct? */
((void) ((top->lo = (((void*)0))), (top->hi = (((void*)0))), ++top));
while ((stack < top))
{
char *left_ptr;
char *right_ptr;
char *mid = lo + size * ((hi - lo)/size >> 1);
...コードが
リンクのコードにこのような行はありません。それは 'PUSH(NULL、NULL); 'とだけ言います。あなたはこのバージョンをどこで手に入れましたか、なぜこの形式で見ていますか? – AnT
上記のコードはポスト前処理です –