Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何从两个不同的头文件定义具有两个结构参数的函数?_C_Function_Header - Fatal编程技术网

C 如何从两个不同的头文件定义具有两个结构参数的函数?

C 如何从两个不同的头文件定义具有两个结构参数的函数?,c,function,header,C,Function,Header,我有两个头文件(H1和H2),分别有两个不同的结构(S1和S2)。我试图在H1中定义一个函数,它将S1和S2作为参数。我没有在头文件之间移动结构的灵活性 功能(S1,S2) 但是,我如何将S2声明为该函数的第二个参数,因为它在H2中而不是H1中?您只需在c文件中包含定义结构的头文件 #include "H2.h" 您只需在c文件中包含定义结构的头文件 #include "H2.h" 在H1中,有: #ifndef H1_INCLUDED #define H1_INCLUDED #inclu

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

功能(S1,S2)


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

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

#include "H2.h"

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

#include "H2.h"
在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
structs2行显示“有一个结构类型带有tag
S2
,我不想再告诉您更多关于它的信息”。只要头中的代码不需要访问结构的成员(这是很可能的),只要函数使用指向结构类型的指针而不是结构类型的实际副本,这就足够了

另见:

    • 在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
      
      structs2行显示“有一个结构类型带有tag
      S2
      ,我不想再告诉您更多关于它的信息”。只要头中的代码不需要访问结构的成员(这是很可能的),只要函数使用指向结构类型的指针而不是结构类型的实际副本,这就足够了

      另见:

      在H1.h中包含“H2.h”在H1.h中包含“H2.h”