首页 > 解决方案 > 在 main() 函数之后在 C 中定义结构

问题描述

我已经学了相当多的java,现在我想学习C,我学到了一些关于结构和typedef的知识,但是当我将typedef放在函数之后并在main()函数内使用它时出现错误main()

有没有办法声明类型但不在 C 中定义它们,所以我可以在main()函数之后保留我的代码类似于函数?(我不确定这是否是好的做法,但我喜欢以这种方式组织我的代码)

标签: cstructtypedef

解决方案


不要那样做。C 代码旨在由编译器读取,它会在不断读取文件时了解新定义。把东西移到下面main()是没有用的。它也会让其他人感到困惑。

至于问题本身:在某些情况下,是的,你可以。如果您需要的一切都是前向声明,那么您可以这样做。但在大多数情况下,你会想要这个定义,所以它对你没有帮助。

例如,这将编译:

struct T;

int main(void)
{
    struct T * p = 0;
    return !!p;
}

// Later on you may define `struct T`

推荐阅读