我有一个奇怪的问题 . 我已经阅读了所有可以找到的文章,我想我认为一切都是正确的:
我在头文件中定义了一个结构 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 回答
如果您的头文件位于不同的文件夹中,那么您需要将头文件的完整路径提到主文件中
例如
如果主文件与头文件位于不同的文件夹中,则应提及主文件中头文件的总路径 .
例如)
如果将头文件包含为
#include "a.h"
,编译器将首先在当前目录中搜索头文件,然后在标准库目录中搜索 . 在您的情况下,您已将头文件保存在名为src/model
的目录中,将主文件保存在名为root
的目录中 . 因此编译器找不到头文件 . 为了解决这个问题,您将头文件和主文件保存在同一目录中,或者在包含 Headers 的同时给出整个路径,如下所示 .