1

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

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

typedef struct{
  int io;
} apa;

这个文件位于一个文件夹中,可以说src/model

此外,在根目录中,我有主文件,其中包含以下头文件:

#include "a.h" 

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

当我使用 gcc 编译它时I-flag-Isrc/model
我收到错误编译警告,上面写着:

'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) 

我似乎找不到问题所在。帮助表示赞赏。

4

3 回答 3

0

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

例如)

#include "/src/model/a.h"
于 2013-04-05T15:54:03.897 回答
0

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

#include "/src/model/a.h"
于 2013-04-05T15:54:04.180 回答
-1

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

例如

instead of just using
#include "a.h"
you have to use   
#include "path to header file/a.h"
于 2013-04-05T17:00:04.127 回答