c-如何创建一个具有用户定义长度的全局数组



我正试图用线程来解决这个问题,我也需要使用管道。我需要创建N个管道和N个线程,但为了创建N个是(int fd[N][2];(并且可以通过线程函数访问的管道,这些管道需要是全局的。

我曾经研究过使用动态内存,但我不知道如何使用。有解决方案吗?

如何创建具有用户定义长度的全局数组?

从技术上讲,你做不到"Global";不是C语言术语,但您的意思是具有外部链接的对象,并且具有外部(或内部(链接的数组的维度必须是整数常量表达式。

可以做的事情之一是声明一个具有外部链接的指针对象,并根据用户的规范为其动态分配指向的空间。您可以使用与数组相同的语法通过指针访问分配的对象。示例:

数据.h

// ...
extern int (*fd)[2];
extern int num_pipes;
// ...

main.c

// ...
// no "extern" in this one place:
int (*fd)[2];
int num_pipes;
int main(void) {
// ... set num_pipes ...
fd = malloc(num_pipes * sizeof(*fd));
if (fd == NULL) {
// TODO: handle allocation failure
}
// ...
}

其他.c

#include "data.h"
int make_pipes() {
for (int i = 0; i < num_pipes; i++) {
int result = pipe(fd[i]);
// ... error handling ...
}
}

相关内容

  • 没有找到相关文章

最新更新