Linux可以使用union作为函数参数??

发布于 2022-10-15 06:27:21 字数 283 浏览 18 评论 0

共用体不是不能作为函数参数的吗?
为什么有很多系统调用都有共用体参数的??
比如 int semctl(int semid,int semnum,int cmd,union semun arg);
最后一个参数就是union的了{:3_198:}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

分开我的手 2022-10-22 06:27:21

可以的。什么地方说不能用?

迟到的我 2022-10-22 06:27:21

哪里不能了,呵呵?

蔚蓝源自深海 2022-10-22 06:27:21

如何可以的话,如何在函数中判断传入来的实参是共用体中的哪个呢?
比如
union U-t{
      int a;
      char c[4];
}
int fnt(union U_t arg);在函数中如何知道传入函数的实参是int a 还是 char c[4]的呢?

谭浩强的书有写“不能把共用体变量作为函数参数的”

再可℃爱ぅ一点好了 2022-10-22 06:27:21

本帖最后由 cokeboL 于 2011-05-24 15:50 编辑

如何可以的话,如何在函数中判断传入来的实参是共用体中的哪个呢?
比如
union U-t{
      int a;
     ...
Horizon2012 发表于 2011-05-24 14:41

    先把union的概念搞清楚撒。。。传的是union,参数就是union,用int还是char是函数的事,用啥就是啥。

初懵 2022-10-22 06:27:21

试过了,的确可以使用共用体作为函数参数
但是为什么
函数原型是int semctl(int semid,int semnum,int cmd,union semun arg);
函数调用可以是semctl(semid,0,SETVAL,1);
我不明白的是最后那个形参明明是union但是调用的时候却给个整型的1????

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文