首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >致命错误: addFunc.h:没有这样的文件或目录

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

Stack Overflow用户
提问于 2017-12-27 04:20:05
回答 2查看 3K关注 0票数 0

我已经创建了一个Makefile文件来运行C程序在外壳script.but,我得到作为错误的fatal error: addFunc.h: No such file or directorymainProg.c页面和addFunc.c页面。我尽我最大的努力解决这个problem.but我没有得到一个解决方案。

mainProg.c

代码语言:javascript
运行
复制
#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

代码语言:javascript
运行
复制
int add(int a, int b)

addFunc.c

代码语言:javascript
运行
复制
#include "/home/name/Desktop/add/addFunc.h"
int add(int a,int b){
return (a+b);
}

Makefile

代码语言:javascript
运行
复制
Add: mainProg.c addFunc.c
    gcc -o Add mainProg.c addFunc.c -I.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-27 04:28:52

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

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

首先,您应该只对stdio.h等系统头使用#include <...>表单。对于您的个人头,您应该使用表单#include "..."。区别是特定于实现的,但对于大多数编译器来说,使用<...>的包含文件永远不会在当前目录中查找,而是仅在系统目录和使用-I提供的目录中查找,而使用"..."的包含文件也会在当前目录中查找。

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

票数 1
EN

Stack Overflow用户

发布于 2017-12-27 04:27:44

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

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

使用#include "addFunc.h"应该可以做到这一点。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47983356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档