我正在为 STM32 编写 C 库并遇到问题。
我有 typedef 结构:
typedef struct foo {
// some struct elements
} foo;
foo
类型的易失性变量:
volatile foo bar;
以及带有
foo
类型参数的函数:
int foobar(foo* baz) {
// some operations with baz
return 0;
}
当我尝试致电
foobar(&bar);
时,收到错误消息:error: invalid conversion from ‘volatile foo*’ to ‘foo*’ [-fpermissive]
如果我将
volatile foo*
投射到 foo*
( foobar((foo*)&bar);
) 会起作用吗?
我尝试将
volatile foo*
转换为 foo*
,但我不知道它是否会在没有错误的情况下工作。
声明函数
int foobar(volatile foo* baz) {
// some operations with baz
return 0;
}
因为
类型并不总是用作 volatile。foo
上面的函数接受
foo baz; foobar(&baz);
而不发出警告。