C 中不兼容的 "for" 循环
Incompatible "for" loop in C
我有一个包含以下函数的 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);
}
但是我在 code.I 中标识的行中收到错误“'for' 循环初始声明仅在 C99 模式下允许”不知道如何解决这个问题,我无法切换到 C99 mode.I 无法在空行中声明 "int i = position" 所以我不确定该怎么做。
谢谢
在 for 循环外声明它。
int i;
for ( i = position; i < list->size; ++i )
发生这种情况是因为在 C 中,最初您必须像这样执行 for 循环:
int i; // note declaration before loop
for ( i = position; i < list->size; ++i ) { //line were error
您可以通过在代码中进行此更改或添加标志来解决此问题:-std=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);
}
但是我在 code.I 中标识的行中收到错误“'for' 循环初始声明仅在 C99 模式下允许”不知道如何解决这个问题,我无法切换到 C99 mode.I 无法在空行中声明 "int i = position" 所以我不确定该怎么做。
谢谢
在 for 循环外声明它。
int i;
for ( i = position; i < list->size; ++i )
发生这种情况是因为在 C 中,最初您必须像这样执行 for 循环:
int i; // note declaration before loop
for ( i = position; i < list->size; ++i ) { //line were error
您可以通过在代码中进行此更改或添加标志来解决此问题:-std=c99
这似乎也是一个相当普遍的问题。下次发帖请先搜索您的问题