【发布时间】:2022-11-18 14:45:48
【问题描述】:
我有 3 个文件:
主程序
#include "fle.h"
int main(int argc, char **argv) {
FILE *fptr = checkFile(argv[1]);
}
文件
#include "fle.h"
FILE *checkFile(char *path)
{
...
}
文件.h
#include <stdio.h>
#include <stdlib.h>
#ifndef FLE_H_
#define FLE_H_
FILE *checkFile(char *path);
#endif
我的生成文件看起来像这样
CC = gcc
CFLAGS = -g -Wall
TARGET = main
all: $(TARGET)
$(TARGET): $(TARGET).c
$(CC) $(CFLAGS) -o $(TARGET) $(TARGET).c
clean:
$(RM) $(TARGET)
作为一个最小的(非)工作示例,它会抛出一个错误
/main.c:4: undefined reference to `checkFile'
我很好奇为什么 checkFile 函数左边是反引号,右边是撇号,看起来不对,但我认为这不是问题所在。
对于这个问题的任何帮助,我将不胜感激,这可能是微不足道的,但显然我没有足够的技能自己解决它。
编辑:我已经将名称从 file 重命名为 fle 以防止与系统库发生一些冲突,但它并没有改变任何事情。
【问题讨论】:
-
想一想如果没有 makefile,您将如何编译它。你会使用什么命令?然后查看 makefile 并意识到根本没有对
fle.c的引用。 -
包括正确的标题永远不会帮助“未定义的引用”。你似乎混淆了什么。 (一个例外,如果你在标题中定义函数......不寒而栗)。
-
感谢您的澄清。我希望构建过程会自动执行此操作,很高兴知道我还必须将其包含在 makefile 本身中。非常感谢!
标签: c