致命错误:addFunc.h:没有这样的文件或目录

问题描述 投票:0回答:2

我已经创建了一个Makefile来运行shell脚本中的C程序。但是我在fatal error: addFunc.h: No such file or directory页面和mainProg.c page.i中得到了错误addFunc.c。我尽力解决这个问题。但是我没有得到解决方案。我在下面提到了我的代码。

mainProg.c

#include <stdio.h>
#include "/home/name/Desktop/add/addFunc.h"
int main(){
int a,b;
printf("Enter two numbers\n");
scanf("%d%d",&a,&b);
printf("sum:%d\n",add(a,b));
return 0;
}

addFunc.h

int add(int a, int b)

addFunc.c

#include "/home/name/Desktop/add/addFunc.h"
int add(int a,int b){
return (a+b);
}

Makefile文件

Add: mainProg.c addFunc.c
    gcc -o Add mainProg.c addFunc.c -I.
c linux makefile include c-preprocessor
2个回答
1
投票

你真的应该剪切和粘贴,因为你在这里粘贴的文字显然与你实际使用的文字完全不同(你在这里有大量的语法错误)。

但是,问题是编译器找不到您的头文件。这可以通过两种方式中的一种(或两种)解决:

首先,你应该只为#include <...>等系统标题使用stdio.h表单。对于你的个人标题,你应该使用#include "..."形式。不同之处在于特定于实现,但对于大多数编译器而言,使用<...>的包含文件从不在当前目录中查找,而是仅在使用-I的系统目录和目录中查找,而使用"..."的包含文件也在当前目录中查找。

您还可以简单地要求编译器始终通过将-I.选项添加到makefile中的编译行来查看当前目录。


0
投票

看来你遇到的问题正在发生,因为你正在使用#include <addFunc.h>。当您使用系统头文件时,您将使用<>。从你的makefile看起来你不是。

当您使用自己程序的头文件时,#include语句会略有不同,因为它会在您的.c文件所在的字典中进行搜索。

使用#include "addFunc.h"应该可以解决问题。

有关#include指令see this page的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.