首页 文章

使用C在头文件中定义struct时的编译错误

提问于
浏览
1

我有一个奇怪的问题 . 我已经阅读了所有可以找到的文章,我想我认为一切都是正确的:

我在头文件中定义了一个结构 a.h

typedef struct{
  int io;
} apa;

这个文件位于一个文件夹中,让我们说 src/model

此外,在根目录中我有主文件,我包括头文件如下:

#include "a.h" 

int main(){
  apa X;
 return 0;
}

当我根据 -Isrc/model 使用带有 I-flag 的gcc编译它时
我得到错误编译警告说:

'apa' undeclared (first use in this function)
(Each undeclare identifier is reported only once for each function it appears in)
X undeclared (first use in this function)

我似乎无法找到问题 . 帮助赞赏 .

3 回答

  • -1

    如果您的头文件位于不同的文件夹中,那么您需要将头文件的完整路径提到主文件中

    例如

    instead of just using
    #include "a.h"
    you have to use   
    #include "path to header file/a.h"
    
  • 0

    如果主文件与头文件位于不同的文件夹中,则应提及主文件中头文件的总路径 .

    例如)

    #include "/src/model/a.h"
    
  • 0

    如果将头文件包含为 #include "a.h" ,编译器将首先在当前目录中搜索头文件,然后在标准库目录中搜索 . 在您的情况下,您已将头文件保存在名为 src/model 的目录中,将主文件保存在名为 root 的目录中 . 因此编译器找不到头文件 . 为了解决这个问题,您将头文件和主文件保存在同一目录中,或者在包含 Headers 的同时给出整个路径,如下所示 .

    #include "/src/model/a.h"
    

相关问题