【问题标题】:What's the difference between declaring an array in C like this: int a[n] and int a<n>像这样在 C 中声明数组有什么区别: int a[n] 和 int a<n>
【发布时间】:2022-01-20 01:29:53
【问题描述】:

我试图做一些从客户端发送到服务器的 RPC 矩阵......以及一些我不记得的直觉将他的 .x 文件与一些“数组”¿?声明如下: int X ;在 .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 ;”的指针东西,那里有一个 int (.X_len) 和一个实际指针 (.X_val)。 现在我已经尝试通过将这对“”更改为一对“[]”,并编译到命令“make -f Makefile.dum”,其中编译给了我很多错误。非常感谢您的帮助。

一个大学的朋友把那个代码给了我,所以我不知道它的来源直接问创建者。谢谢。 (:

【问题讨论】:

    标签: arrays c pointers declaration rpc


    【解决方案1】:

    int X &lt;100&gt;; 不是 C。它是 RPCGEN 的 XDR 输入,因此请参阅其文档以了解语法。 RPCGEN 会将其输入文件处理成 C 代码,其中可能包括自动声明一个带有一堆附加成员的结构。

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

    【讨论】:

    • 非常感谢!我会检查一下。我认为带有 C 的 RPC 只是关于我记得被教过的基本 C 语法。
    • 我能够做我想做的事!我阅读了您发送的文件。你救了我的命,伙计!我希望很快我会在我的 github 帐户上发布该代码,我会在下一条评论中链接它。尽可能多地注释所有代码。祝您有美好的一天、下午或夜晚……根据您观看此视频的时间。
    猜你喜欢
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 2021-05-04
    • 2020-12-27
    • 2021-09-17
    • 2014-10-19
    • 1970-01-01
    相关资源
    最近更新 更多