【问题标题】:Is there a way to pass a struct without an explicitly named type as an argument to a function?有没有办法将没有显式命名类型的结构作为参数传递给函数?
【发布时间】:2016-03-29 21:21:16
【问题描述】:

假设我们有以下定义如下的结构:

struct
{
    int  month;
    int  day;
    int  year;
} date;

我能否以某种方式实现一个函数,该函数将一个与日期相同类型的结构作为参数,即使它没有明确命名?换句话说,我能否对randomFunction (date) 之类的随机函数进行函数调用?在这种情况下,由于date 的结构类型没有名称,该函数的标头会是什么样子?

提前致谢:)

【问题讨论】:

标签: c function struct arguments


【解决方案1】:

您可以定义日期的结构类型并在程序中使用date调用它

typedef struct date{
    int  month;
    int  day;
    int  year;
} date;

【讨论】:

    【解决方案2】:

    有一些方法可以间接地做到这一点(例如,您可以传递一个指向该类型对象的void* 指针,然后以某种方式访问函数内结构的成员) .

    使用, ... 声明的可变参数函数不起作用,因为在调用va_arg() 时仍需要指定类型的名称。

    不,没有直接的方法可以做到这一点。函数参数必须是某种命名类型。坦率地说,没有任何一种间接的方式值得去做。

    如果您想将某个 struct 类型的参数传递给函数,只需为该类型命名。

    【讨论】:

      猜你喜欢
      • 2019-06-28
      • 1970-01-01
      • 2022-09-27
      • 2020-02-26
      • 2019-06-03
      • 2019-07-30
      • 2021-03-23
      • 2022-01-03
      相关资源
      最近更新 更多