【问题标题】:In C, how do you use a struct in the main function that was declared in a header file?在 C 中,如何在头文件中声明的主函数中使用结构?
【发布时间】:2015-02-14 20:18:47
【问题描述】:

在 C 语言中,我需要在头文件中声明一个结构链表。在我的 .c 文件的主文件中,如何声明我的结构的新实例?我还应该为我的结构使用 typedef 吗?

【问题讨论】:

  • 你需要更清楚你需要什么帮助。举个你不明白的例子。
  • 不,您不需要类型别名 (typedef) 用于结构或其他任何东西,这主要是为了让一些复杂的类型更易于阅读和编写。

标签: c struct typedef header-files


【解决方案1】:

在您的标题中:

struct mystruct
{
int a;
int b;
};

在 .c 文件 include (#include "header.h") 头文件中,然后在 main: 中使用:

struct mystruct obj1;
obj1.a=0;
obj1.b=0;

【讨论】:

    【解决方案2】:

    在你的头文件中添加定义和类型定义

    typedef struct linked_list_node_st {
        int val;
        struct linked_list_node_st *next;
    } Linked_List_Node;
    

    在 main.c 中,使用 typedef 调用结构。

    #include <stdio.h>
    #include <stdlib.h>
    #include "structure.h"
    
    int main(int argc, const char * argv[]) {
        Linked_List_Node *node;
        node = malloc(sizeof(Linked_List_Node));
        node->next = 0;
        node->val = 1;
    
        return 0;
    }
    

    【讨论】:

    • 很好,但为了清楚起见,我将使用struct linked_list_node_st 作为结构,使用Linked_List_Node 作为类型(即typedef struct linked_list_node_st Linked_List_Node; ....);对结构标签和类型名称使用相同的标识符可能会让新手感到困惑。
    【解决方案3】:

    你在标题中有结构,并且想要在 main.c 中的结构? 只需在 main.c 中使用 #include "header.h" 指令包含它,然后开始使用 struct。

    当你想在c 中创建“你的变量”时,你可以使用 typedef,比如:

    typedef int INTEGER;
    INTEGER number;
    

    所以你使用 typedef 来更仔细地识别你的结构,为你或为读者。

    【讨论】:

    • 其实你的INTEGER例子不是很好。为了便于阅读,请使用int。然而 &lt;stdint.h&gt; 在 C 中定义了有趣的整数类型(例如 uint32_tintptr_t)。
    • 我只是举了“视觉”的例子,或者 typedef 的目的之一。
    猜你喜欢
    • 2011-02-13
    • 2014-04-25
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多