像这样在 C 中声明数组有什么区别:int a[n] 和 int a<n>

What's the difference between declaring an array in C like this: int a[n] and int a<n>

我正在尝试执行一些从客户端到服务器的 RPC 矩阵发送...还有一些我不记得的人将他的 .x 文件与一些“数组”?声明如下: int X <100>;在 .x 的结构中...这是他创建的结构:

struct X_array{
    int X <100>;
    int X_size;
}

有趣的是,在他的客户端代码中,他有一些像这样的代码:(我会稍微概括一下)

printf("Give size)";
scanf("%d",&n);
average_1_arg.X.X_len=n;
avegare_1_arg.X_size=n;
average_1_arg.X.X_val=(int*)malloc(n*sizeof(int));

在他的 .x 中,该函数声明为: 浮动平均值(X_array)=1;

他从哪里得到他的结构的这些部分?

对我来说最疯狂的事情是我用“rpcgen -a -C dum.x”从 0 编译了他的 .x,然后我写了客户端和服务器,就像他在他的.c,我的意思是,客户端和服务器 .c,然后在控制台上输入“make -f Makefile.dum”,然后 运行 ./dum_server 和 ./dum_client一切正常,没有错误。令我印象深刻的是,X_array 结构中不在 .x 中的部分位于客户端代码中,并且这些部分甚至无需声明该变量的类型即可工作;即使那些是来自“int X <100>;”的指针东西,那里有一个 int (.X_len) 和一个实际指针 (.X_val)。 现在我已经尝试将那对“<>”更改为一对“[]”,并编译直到命令“make -f Makefile.dum”,编译给了我很多错误。非常感谢你的帮助。

那个代码是大学同学给我的,不知道出处直接问作者。谢谢。 (:

int X <100>; 不是 C。它是 RPCGEN 的 XDR 输入,因此请参阅其文档了解语法。 RPCGEN 将把它的输入文件处理成 C 代码,这可能包括自动声明一个带有一堆额外成员的结构。

参见 the RPCGEN manual 中的 6.8 (3)“可变长度数组声明”,其中特别解释了 _len_val 成员的创建。