相关疑难解决方法(0)

关于c中静态函数指针的困惑

请查看以下代码段.它写于2005年,但我用最新的gcc编译它.

xln_merge_nodes_without_lindo(coeff, cand_node_array, match1_array, match2_array)
  sm_matrix *coeff;
  array_t *cand_node_array, *match1_array, *match2_array;
{ 
  node_t *n1, *n2;
  sm_row *row1, *row2;
  static sm_row *xln_merge_find_neighbor_of_row1_with_minimum_neighbors();

  while (TRUE) {
      row1 = sm_shortest_row(coeff);
      if (row1 == NIL (sm_row)) return;
      n1 = array_fetch(node_t *, cand_node_array, row1->row_num);
      row2 = xln_merge_find_neighbor_of_row1_with_minimum_neighbors(row1, coeff);
      n2 = array_fetch(node_t *, cand_node_array, row2->row_num);
      array_insert_last(node_t *, match1_array, n1);
      array_insert_last(node_t *, match2_array, n2);
      xln_merge_update_neighbor_info(coeff, row1, row2);
  }
}
Run Code Online (Sandbox Code Playgroud)

在编译时,它抱怨,

xln_merge.c:299:18: error: invalid storage class for function ‘xln_merge_find_neighbor_of_row1_with_minimum_neighbors’
Run Code Online (Sandbox Code Playgroud)

(xln_merger.c:299是定义开始后的第3行).

第3行函数定义似乎是一个函数声明(不是吗???).程序员是否打算编写函数指针(静态)?或者某些语法在c中已经发生了变化,为什么这不是编译.

此代码来自此处的sis

static function-pointers

5
推荐指数
3
解决办法
2万
查看次数

标签 统计

function-pointers ×1

static ×1