小编lin*_*eak的帖子

int32,int,int32_t,int8和int8_t之间的区别

int32_t最近在C程序中遇到了数据类型.我知道它存储了32位,但是没有int并且int32做同样的事情?

另外,我想char在程序中使用.我可以用int8_t吗?有什么不同?

总结一下:C中的int32,int,int32_t,int8和int8_t有什么区别?

c int declaration

90
推荐指数
3
解决办法
17万
查看次数

为什么-Wcast-align没有警告在x86上从char*转换为int*?

我知道gcc有一个选项-Wcast-align,只要指针被转换就会发出警告,以便增加目标所需的对齐.

这是我的计划:

char data[10];
int ptr = *((int *)data);
Run Code Online (Sandbox Code Playgroud)

在我的机器上,数据的对齐要求是1,而ptr是8.

为什么我没有收到警告?

可能是因为我正在为x86编译吗?

c memory-alignment gcc-warning typecasting-operator

11
推荐指数
1
解决办法
6922
查看次数

在PowerPC中生成未对齐的内存访问异常

我有一个适用于PowerPC的巨大源代码.我需要将它移植到ARM.但是,ARM在未对齐的内存访问上生成h/w异常.所以,我想找到所有可能发生未对齐内存访问异常的实例.我考虑过以下几种选择.

  1. 在gcc中使用-Wcast-align会对未对齐访问产生警告.
  2. 使PowerPC生成未对齐的异常.对于ARM,有一个选项/ proc/cpu/alignment,用户可以通过该选项决定如何处理异常.但是,PowerPC没有这样的选择.

我的问题是,

  1. 有没有办法让PowerPC生成未对齐的内存访问异常?
  2. 有没有更好的方法来找出源代码中所有出现的未对齐内存访问?

c gcc powerpc memory-alignment embedded-linux

6
推荐指数
1
解决办法
1422
查看次数

在到达视图集之前记录所有 REST API 请求

我希望能够记录到达 Django REST framework API 的所有 REST 请求。我也想记录 API 调用的响应。我在哪里可以定义记录所有 REST API 请求和响应的函数?

django logging django-rest-framework

5
推荐指数
1
解决办法
2730
查看次数

用于从 H/W 寄存器读取的位字段

我想从32位寄存器中读取第2位、第5位和第6位。我决定使用结构位字段来存储它们。下面的数据结构正确吗?

struct readData
{
    int unwanted:1;
    int reqbit1:1;
    int unwanted1:2;
    int reqbit2:2;
    int unwanted2:26;
};
Run Code Online (Sandbox Code Playgroud)

我不确定如何创建位字段。我将使用一个 API 将字节从 h/w 寄存器直接复制到该结构。在这种情况下,reqbit1 会包含第 2 位吗?根据我的理解,编译器将第一位分配给 int 变量,第二位分配给另一个 int 变量,因此 reqbit1 不会从寄存器读取任何数据。下面的union不是更适合这种情况吗?

union readData
{
    struct readBits
    {
        bool unwanted:1;
        bool reqbit1:1;
        xxx unwanted1:2;
        short reqbit2:2;
        xxx unwanted2:26;
    };

    int regValue;
};
Run Code Online (Sandbox Code Playgroud)

如果这是正确的,我应该将unknown2声明为什么?

c bit-manipulation bitwise-operators unions bit-fields

4
推荐指数
1
解决办法
2233
查看次数

将数据存入整数时会产生错误的数字?

我有这样的char缓冲区

char *buff = "aaaa0006france";
Run Code Online (Sandbox Code Playgroud)

我想提取字节4到7并将其存储在int中.

int i;
memcpy(&i, buff+4, 4);
printf("%d ", i);
Run Code Online (Sandbox Code Playgroud)

但它会打印垃圾值.

这有什么问题?

c parsing buffer pointers memcpy

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