【发布时间】:2025-12-21 18:10:12
【问题描述】:
所以我有两个不同的结构,其中我将访问的所有属性都是相同的。而且我还有一个函数,谁的论点,我希望能够接受两者中的任何一个。示例:
typedef struct{
int whatnot = 14;
int thing[11];
} TH_CONFIG;
typedef struct{
int whatnot = 3;
int thing[5];
} TH_CONFIG_2;
*_CONFIG var;
void fun(*_CONFIG input)
{
input.whatnot = 5;
}
int main(){
fun(var);
}
我可能有一种暗示,我应该使用 void 作为我可以进行类型转换的类型或其他东西?但我的搜索只得到了关于函数指针、模板和 C# 的东西。
编辑:*_CONFIG 在语法上并不正确,它表示我不知道在那里做什么,但它应该是 _CONFIG 类型
【问题讨论】:
-
void fun(*_CONFIG input)- 这是一个语法错误。 -
您可能想了解unions。
-
这两种结构不兼容;
int whatnot = 3;表示法无效 C;*_CONFIG var;无效 C;void fun(*_CONFIG input)是无效的 C。一般来说,一个函数应该只适用于一种类型;否则,它缺乏功能凝聚力。如果必须,您可以通过void *和其他标识void *指向的类型的值传递值。或者您可以使用union的类型。如果联合中的所有类型都存在该成员并且它包含单独的值,您甚至可以使用.whatnot成员来识别您正在处理的类型。
标签: c function types struct arguments