首页 > 解决方案 > 从位域接受值的函数 arg 使用什么类型

问题描述

假设我有一个大小为 1 字节的结构,它由

typedef struct foo
{
  uint8_t fo1:2;
  uint8_t fo2:3;
  uint8_t fo3:3;
}foo;

然后我想fo2作为参数传递给函数func_foo(fo2),但我不知道如何声明该函数,因为fo2它实际上没有任何类型。知道怎么做吗?欣赏任何信息!

标签: csplitbytebit-fields

解决方案


您可以使用uint8_t. 即使它比需要的大,它也足够大。

void func_foo(uint8_t fo2) {
   printf("%d\n", fo2);
}

foo bar = { 1, 2, 3 };
func_foo(bar.fo2);

我不知道如何声明该函数


推荐阅读