2019.12.26

这两天写了一个小demo来对公司的一个产品进行测试,由于对cpp不是很熟悉,所以遇上了不少坑,现在记录一下。

msgsnd、msgrcv
  • 这两个函数的参数size传的是除去第一个字段type之后的长度。

  • 如果传的结构体除了type之外是紧密排布了,那么收到后,可以直接强转回结构体,但要注意机器的大小端问题。如

    struct msgq{
        long type;
        char mtext[MAXMSG];
    }
    
    //往mtext里传
    typedef struct MY_STRUCT{
        /
    }__PACKED__ MY_STRUCT;
    
    MY_STRUCT my_struct;
    memcpy(msgq.mtext, &my_Struct, sizeof(my_struct));
    msgsnd(msgid, &msgq, sizeof(my_struct), 0);
    static char databuf[MAXMSG]
    msgrcv(msgid, databuf, MAXMSG, 0, 0);
    
    MY_STRUCT * rcv_struct = (MY_STRUCT *)(databuf + sizeof(long));
    
  • 如果msgid为零,要看看有没有创建成功对应的文件,有些机器是不会自动建的,要自己手动建。

文件io
  • 写文件时遇到写不进去,卡住不动,但又没死机、退出,这时候可能是flush的问题,在循环读写里最为常见。
代码块问题
  • 要留意大括号的位置,不要把代码块外的语句放到代码块里。
头文件
  • 遇到过cout未声明、std::cout不属于std,检查下有没有#include <iostream>,很多代码是用print类函数的,而不是用cout,这时的代码文件中就没有导入<iostream>。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值