gpt4 book ai didi

c - 如何在全局数组声明中声明 sysconf 返回值?

转载 作者:太空狗 更新时间:2023-10-29 15:36:38 26 4
gpt4 key购买 nike

我编写了一个程序来维护所有打开的文件描述符的详细信息。

因此,我使用 sysconf 函数来获取允许的运行时最大打开文件描述符。

如果数组声明不在全局中意味着它不会说任何错误。它工作正常。

这是我的程序,

#define MAX_CLIENT sysconf(_SC_OPEN_MAX)   
int arr[MAX_CLIENT];
main ()

{
printf("%ld \n",MAX_CLIENT);
}

编译时报错

error: variably modified ‘arr’ at file scope

然后我用 cc -E 选项检查。预处理器工作后,程序看起来像这样

int arr[sysconf(_SC_OPEN_MAX)];
main ()

{
printf("%ld \n",sysconf(_SC_OPEN_MAX));
}

这是我的问题,如何在全局中声明数组。

最佳答案

最简单的选择是使用malloc()动态分配数组:

int *arr;

int main(void) {
arr = malloc(sysconf(_SC_OPEN_MAX) * sizeof(int));
...
free(arr);
}

您现在拥有的代码工作,但前提是arr 是在函数内声明的。然后它将使用名为 variable-length arrays 的 C99 功能。 .

关于c - 如何在全局数组声明中声明 sysconf 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063853/

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