使用C++将匿名结构作为参数传递给函数



所以。。我正在使用C++进行一个项目,我有多个结构,只有一个函数需要将其中一个结构作为参数。

我已经到处找了,只在特定的。。。

这是我的一个结构

struct {
int tag_id;
String serial;
} dataHeader;

在我经过的地方

loraSend(message, &dataHeader);

下面是将接收结构作为参数的函数void loraSend(String message, struct MsgStruct &msg_struct)

The problem is that this is just giving this error: "no matching function for call to 'loraSend(String&, <anonymous struct>*)' ".

你能向我解释一下我该怎么解决这个问题吗?

非常感谢

using MsgStruct = decltype(dataHeader);

void loraSend(String message, MsgStruct* msg_struct) {
// ...
}

// elsewhere:
loraSend(message, &dataHeader);

您正在将struct dataHeader类型的参数传递给接受第二个struct MsgStruct类型参数的函数。这就是您收到错误消息的原因

您的函数loraSend可能被重载(即,用第二个参数类型struct MsgStruct写入它的另一个副本(,或者,您的第二个变量可能是void指针(可以指向任何东西(,loraSend需要计算出它的参数类型。

标准C++不支持匿名结构,但支持匿名联合。所以我看不出你不应该这么做的原因:
struct MsgStruct {
int tag_id;
String serial;
} dataHeader;

而不是typedefusing声明。


结构

struct {
int tag_id;
String serial;
} dataHeader;

是一个未命名的([class.pre](结构:

一个类说明符,其类头省略了类头名称定义未命名的类。

匿名结构的一个例子是:

struct {
int a;
int b;
};

-pedantic编译上面的内容应该说明匿名结构不是iso c++,但是有些编译器有它的扩展

最新更新