代码之家  ›  专栏  ›  技术社区  ›  Alexis Wilke

我想重置一个C++结构体STAT,我能以某种方式使用Stand()语法吗?

  •  1
  • Alexis Wilke  · 技术社区  · 6 年前

    为了安全起见,我喜欢显式地初始化变量(当您编写大量代码时,它通常会使它更安全,如中所述,您的代码最终不会崩溃)。

    对于大多数类型,无论是结构还是基本C++类型,如整数,我可以写如下:

    time_t now = time();  // initialize now to 0
    
    struct foo
    {
        int param_;
    };
    foo f = foo();  // initialize f.param_ to 0
    

    当我尝试对 struct stat ,我有麻烦了:

    struct stat s = stat();
    

    在这种情况下,C++编译器告诉我 stat() 是一个函数,需要调用x个参数。

    这是初始化语法的不足吗?

    注意:我知道我可以使用 memset() 如:

    struct stat s;
    memset(&s, 0, sizeof(s));
    

    只是在这种情况下没用:

    struct foo
    {
        struct stat   s_ = stat();
    };
    

    我也知道我可以写我自己的初始化函数如下:

    inline struct stat init_stat()
    {
        struct stat s;
        memset(&s, 0, sizeof(s));
        return s;
    }
    struct foo
    {
        struct stat s_ = init_stat();
    };
    

    我只是想找个更干净的方法 time_t() foo() 上面。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Rakete1111    6 年前

    使用聚合初始化,因为它不要求您指定要使用以下命令初始化变量的类型:

    struct stat s_{};
    // or
    struct stat s_ = {};