首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果数组大小只能是一个常量值,那么char d_name[...]卑劣?

如果数组大小只能是一个常量值,那么char d_name[...]卑劣?
EN

Stack Overflow用户
提问于 2012-03-10 17:47:32
回答 1查看 232关注 0票数 4

如果数组大小只能是一个常量值,那么

代码语言:javascript
复制
   char d_name[...] 

卑劣?

实际上,在dirent.h文件中声明了一个struct dirent。它的声明如下:

代码语言:javascript
复制
struct dirent{
  ....
  ino_t d_ino;
  char d_name[...];
  ...
  };

它用于一次读取一个目录内容,即inode编号和文件名等。

我的意思是,这样的数组的最大大小是多少,一旦定义了这样的数组,内存中静态分配了多少空间?这样的定义可移植吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-10 17:56:48

假设它来自struct linux_dirent,那么它实际上是char d_name[]

代码语言:javascript
复制
struct linux_dirent {
    unsigned long  d_ino;     /* Inode number */
    unsigned long  d_off;     /* Offset to next linux_dirent */
    unsigned short d_reclen;  /* Length of this linux_dirent */
    char           d_name[];  /* Filename (null-terminated) */
}

它被称为灵活的数组成员,使用malloc可以为结构分配更多的内存,从而使d_name具有可变的大小。

编辑

OP引用的文本:

目录条目由结构dirent表示

struct dirent { ...ino_t d_ino;/* XSI扩展-查看文本*/ char d_name ...;/*查看此数组大小的文本*/ ... };

对于...,作者表示每个标准的大小都不是固定的。每个实现都必须选择固定的大小,例如Linux选择256。但这不是有效的代码。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9645472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档