首页 > 解决方案 > 定义结构的新实例

问题描述

我尝试在一个简单的 C 项目中键入以下代码,但它一直说 MyStruct 是未定义的——除非我struct在每个之前添加MyStruct(即struct MyStruct my_struct;感觉不对?)。

struct MyStruct {
    int my_int;
}

int main() {
    MyStruct my_struct;
    my_struct->my_int = 1;

    return 0;
}

标签: cobjectstruct

解决方案


没错,这就是 C 的工作方式。类型名称是struct MyStruct(它只是MyStruct在 C++ 中)。如果您觉得不方便,请创建一个 typedef,例如:

typedef struct MyStruct { ... } MyStruct;

不过,这可能被认为是也可能不是一个好的做法。

另请注意,结构(但不是 typedef)和函数可以具有相同的名称(不带struct前缀)。sigaction是一个真实的例子。


推荐阅读