当前位置:  技术问答>linux和unix

union semun 变量编译时说大小无法确定,为什么?

    来源: 互联网  发布时间:2016-03-01

    本文导语:  我在编译如下代码时,编译器报了一堆错误,其中有一个是“a40.c:28: 错误:‘semopts’ 的存储大小未知”,为什么啊: #include  #include  #include  #include  #include  #include  #include  #include  #define SEM_NUM 10 #define SEM_MODE...

我在编译如下代码时,编译器报了一堆错误,其中有一个是“a40.c:28: 错误:‘semopts’ 的存储大小未知”,为什么啊:
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define SEM_NUM 10
#define SEM_MODE (IPC_CREAT|0660)

void changemode(int sid, char *mode);
void printfmode (union semun *arg);



void printfmode (union semun *arg)
{
        printf("mode=%d:n", arg->buf->sem_perm.mode);
        return;
}


int main(void)
{
        int semid;
        union semun semopts;
        struct semid_ds semds;

        if ((semid=semget(IPC_PRIVATE, SEM_NUM, SEM_MODE))==-1)
        {
                fprintf(stderr, "semget error!n");
                exit(1);
        }

        semopts.buf=&semds;
        if((semctl(semid,0,IPC_STAT,semopts))==-1)
        {
                fprintf(stderr, "get semid_ds error!n");
                exit(1);
        }

        printfmode(&semopts);
        changemode(semid, "0600");


        if((semctl(semid,0, IPC_STAT, semopts))==-1)
        {
                fprintf(stderr, "get semid_ds error!n");
                exit(1);
        }
        printfmode(&semopts);

        if((semctl(semid,0, IPC_RMID, 0))sem_perm.mode);
        semctl(sid,0, IPC_SET, semopts);

        return;
}

如果我把头文件改为
#include 
//#include 
//#include 
#include 
#include 
编译可以通过,但是在运行printf("mode=%d:n", arg->buf->sem_perm.mode);
时报错,说段错误,哪位高手能指点一下阿?

|
union semun semopts;
是这行的问题, 你这个union的大小系统未知.
我对这个结构不了解, 是不是需要init啊

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.xml.crypto.dsig.spec类xpathtype.filter的类成员方法: union定义及介绍
  • SQL中Union与Union All的区别有哪些
  • java命名空间java.awt类rectangle的类成员方法: union定义及介绍
  • Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识
  • java命名空间java.awt.geom类rectangle2d的类成员方法: union定义及介绍
  • Oracle中Union与Union All的区别(适用多个数据库)
  • Mysql联合查询UNION和UNION ALL的使用介绍
  • 在QT开发环境能定义union、struct吗?
  • union组合结果集时的order问题
  • sqlserver Union和SQL Union All使用方法
  • SQL学习笔记六 union联合结果集使用
  • sql union查询与排序的例子
  • sql 查询结果合并union all用法_数据库技巧
  • 深入SQL SERVER合并相关操作Union,Except,Intersect的详解
  • SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍
  • mySQL UNION运算符的默认规则研究
  • MySQL union 语法代码示例分析
  • Mysql联合查询UNION和Order by同时使用报错问题的解决办法
  • C语言、C++中的union用法总结
  • SQL基础语句(数据库函数,时间函数,Union,Case,索引等)
  • SQLSERVER中union,cube,rollup,cumpute运算符使用说明


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3