如何将易失性 typedef 结构转换为非易失性 typedef 结构作为函数的参数

问题描述 投票:0回答:1

我正在为 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*
,但我不知道它是否会在没有错误的情况下工作。

c casting volatile
1个回答
0
投票

声明函数

int foobar(volatile foo* baz) {
    // some operations with baz
    return 0;
}

因为

foo
类型并不总是用作 volatile。

上面的函数接受

foo baz; foobar(&baz);
而不发出警告。

© www.soinside.com 2019 - 2024. All rights reserved.