【问题标题】:How to define a function with two struct parameters from two different header files?如何使用来自两个不同头文件的两个结构参数定义一个函数?
【发布时间】:2013-10-26 15:22:55
【问题描述】:

我正在使用 C。我有两个头文件(H1 和 H2),分别具有两个不同的结构(S1 和 S2)。我试图在 H1 中定义一个以 S1 和 S2 作为其参数的函数。我没有在头文件之间移动结构的灵活性。

函数(S1,S2);

但是如何将 S2 声明为该函数的第二个参数,因为它在 H2 而不是 H1 中?

【问题讨论】:

  • in H1.h #include "H2.h"

标签: c function header


【解决方案1】:

您只需在 c 文件中包含定义结构的头文件。

#include "H2.h"

【讨论】:

    【解决方案2】:

    在 H1 中,有:

    #ifndef H1_INCLUDED
    #define H1_INCLUDED
    
    #include "H2"
    
    extern ... your_function(S1 arg1, S2 arg2);
    
    #endif
    

    其实如果只需要结构体指针,H2中不必包含H1;你可以简单地写:

    #ifndef H1_INCLUDED
    #define H1_INCLUDED
    
    struct S2;
    
    extern ... your_function(S1 *arg1, S2 *arg2);
    
    #endif
    

    struct S2; 行说“有一个带有标签S2 的结构类型,我不会告诉你更多关于它的信息”。只要标头中的代码不需要访问结构的成员就足够了,这很有可能,只要函数采用指向结构类型的指针而不是结构类型的实际副本。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 2019-11-17
      • 1970-01-01
      • 2017-02-22
      • 2015-02-14
      • 2018-07-02
      • 2020-02-08
      相关资源
      最近更新 更多