相关疑难解决方法(0)

什么是严格别名规则?

当询问C中常见的未定义行为时,灵魂比我提到的严格别名规则更加开明.
他们在说什么?

c strict-aliasing undefined-behavior type-punning

778
推荐指数
10
解决办法
19万
查看次数

将字符缓冲区转换为结构

我有一个包含, , , , ,的char缓冲区bufbuf[0] = 10buf[1] = 3buf[2] = 3buf[3] = 0buf[4] = 58

和一个结构:

typedef struct
{ 
    char type;
    int version;
    int length;
}Header;
Run Code Online (Sandbox Code Playgroud)

我想将 转换bufHeader. 现在我正在使用该功能

int getByte( unsigned char* buf)
{
    int number = buf[0]; 
    return number;
}

int getInt(unsigned char* buf)
{
    int number =  (buf[0]<<8)+buf[1];
    return number;
}

main()
{
    Header *head = new Header;
    int location = 0;

    head->type = getByte(&buf[location]); …
Run Code Online (Sandbox Code Playgroud)

c++ struct pointers type-conversion unsigned-char

2
推荐指数
1
解决办法
6244
查看次数