不相容" for"在C中循环

时间:2015-11-03 23:43:59

标签: c loops for-loop c99

我有一个包含以下功能的C库:

void arlist_del(struct _arlist *list, int position, int delit) {

if (position > list->size - 1)
    return;
if (list->size == 1) {
    arlist_clear(list);
    return;
}
if (delit)
    free(arlist_get(list, position));
for ( int i = position; i < list->size; ++i ) {  //line were error occur
    if (i == list->size - 1)
        list->data[i] = NULL;
    else
        list->data[i] = list->data[i + 1];
}
void ** new_data = realloc(list->data, arlist_getsizeof(list));
--list->size;
assert(new_data != NULL);
arlist_setdata(list, new_data, list->size, 0);
}

然而,我收到错误&#34;&#39;&#39;循环初始声明仅允许在C99模式下使用#34;在代码中识别的行。我想知道如何解决这个问题,我无法切换到C99模式。我无法声明&#34; int i = position&#34;在空行中所以我不知道该怎么做。

谢谢

2 个答案:

答案 0 :(得分:2)

在for-loop之外声明它。

int i;
for ( i = position; i < list->size; ++i )

答案 1 :(得分:0)

这是因为在C中,最初你必须做这样的循环:

int i; // note declaration before loop
for ( i = position; i < list->size; ++i ) {  //line were error

您可以通过在代码中进行此更改或添加标记来解决此问题:-std = c99

此外,这似乎是一个相当普遍的问题。请在下次发布之前先搜索您的问题。