我有一个奇怪的问题。我已经阅读了所有可以找到的文章,我想我认为一切都是正确的:
我在头文件a.h
typedef struct{
int io;
} apa;
这个文件位于一个文件夹中,比方说src/model
此外,在根目录中我有主文件,我包含头文件如下:
#include "a.h"
int main(){
apa X;
return 0;
}
当我根据I-flag
使用带有-Isrc/model
的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)
我似乎无法找到问题所在。帮助赞赏。
答案 0 :(得分:0)
如果主文件与头文件位于不同的文件夹中,则应提及主文件中头文件的总路径。
Eg)的
#include "/src/model/a.h"
答案 1 :(得分:0)
如果将头文件包含为#include "a.h"
,编译器将首先在当前目录中搜索头文件,然后在标准库目录中搜索。在您的情况下,您已将头文件保存在名为src/model
的目录中,将主文件保存在名为root
的目录中。因此编译器找不到头文件。为了解决这个问题,您将头文件和主文件保存在同一目录中,或者在包含标题的同时给出整个路径,如下所示。
#include "/src/model/a.h"
答案 2 :(得分:-1)
如果你的头文件在不同的文件夹中,那么你需要提到头文件到主文件的完整路径
例如
instead of just using
#include "a.h"
you have to use
#include "path to header file/a.h"