我创建了一个Makefile来在shell脚本中运行C程序。但是我在fatal error: addFunc.h: No such file or directory
页面和mainProg.c
页面中得到错误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);
}
生成文件
Add: mainProg.c addFunc.c
gcc -o Add mainProg.c addFunc.c -I.
答案 0 :(得分:1)
你真的应该剪切和粘贴,因为你在这里粘贴的文字显然与你实际使用的文字完全不同(你在这里有大量的语法错误)。
然而,问题是编译器找不到您的头文件。这可以通过两种方式中的一种(或两种)来解决:
首先,您应该仅对#include <...>
等系统标题使用stdio.h
表单。对于您的个人标题,您应该使用#include "..."
表单。区别在于特定于实现,但对于大多数编译器来说,使用<...>
的包含文件永远不会在当前目录中查找,而只能在-I
给出的系统目录和目录中查找,而包含文件使用{{在当前目录中也会查找1}}。
您也可以简单地要求编译器始终通过在makefile中的编译行添加"..."
选项来查看当前目录。
答案 1 :(得分:0)
由于您正在使用#include <addFunc.h>
,因此您遇到的问题似乎正在发生。使用系统头文件时,可以使用<>
。从你的makefile看起来你不是。
当您使用自己程序的头文件时#include
语句略有不同,因为它会在您的.c文件所在的字典中搜索。
使用#include "addFunc.h"
应该可以解决问题。
有关#include
指令see this page