gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:26:17 25 4
gpt4 key购买 nike

看看下面的代码片段。它是在 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);
}
}

在编译时,它提示,
xln_merge.c:299:18: error: invalid storage class for function ‘xln_merge_find_neighbor_of_row1_with_minimum_neighbors’

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

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

此代码来自 sis包裹 here

最佳答案

至少对于 GCC,如果包含文件中存在损坏的声明,它将给出“函数的无效存储类”。你可能想回到你的头文件并寻找什么是声明,而不是一个挂起的函数,比如
在包含的 xxx.h 文件中:

void foo(int stuff){       <<<<<<<<< this is the problem, replace { with ;
void bar(uint other stuff);
开放的“{”真的会混淆 GCC 并且会在后面抛出随机错误。复制和粘贴一个函数而忘记用 ; 替换 { 真的很容易。
特别是,如果你使用我心爱的 1TBS

关于static - 关于 c 中静态函数指针的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com