如何在c中的一行中声明多个寄存器变量?

How to declare multiple register variables in one line in c?

我正在通过保持指向先前和当前节点的指针来实现链表的 destroy 方法。我想在一行中将它们声明为寄存器变量。可能吗?

void list_destroy(list *ls) {
  // does this mean both prev and curr are register variables?
  register node *prev, *curr;
  
  for (prev = 0, curr = ls; curr != 0; curr = curr->next) {
    if (prev != 0)
      free(prev);
    prev = curr;
  }
  free(ls);
}

void list_destroy(list *ls) {
  node register *prev, *curr;
  
  for (prev = 0, curr = ls; curr != 0; curr = curr->next) {
    if (prev != 0)
      free(prev);
    prev = curr;
  }
  free(ls);
}

register 是一个存储 class 说明符,因此它适用于声明中的所有声明符。它适用于这些示例中的位 prevcurr

通常,您将存储 class 说明符放在行首(在任何类型说明符之前),但这不是必需的。存储 class 和类型说明符可以按任何顺序排列(但都必须在声明符和声明符上的任何指针或限定符或其他修饰符之前)