[英]C palindrome program - undefined reference to main
我写了一个函数,它检查字符字符串是否是回文。
//pan.c
#include <stdbool.h>
#include "funs.h"
#include <stdio.h>
#include <string.h>
bool palindrom(char napis[])
{
int begin, middle, end, length = 0;
while(napis[length] != '\0')
length++;
end = length - 1;
middle = length;
for (begin = 0; begin < middle; begin++)
{
if(napis[begin] != napis[end])
{
return false;
break;
}
end--;
}
if(begin == middle)
return true;
}
我还创建了 funs.h
//funs.h
#include <stdbool.h>
bool palindrom();
现在,我试图在我的主函数中使用这个函数
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include "funs.h"
int main()
{
char text[100];
bool result;
printf("Enter an char: ");
scanf("%s", text);
result = palindrom(text);
if(result)
{
printf("Brawo!\n");
}
else
{
printf("Gówno!\n");
}
return 0;
}
我还创建了makefile:
# Makefile
all: main
main: main.o pan.o
clang -o main main.o pan.o
main.o: main.c
clang -c main.c
pan.o: pan.c
clang -c pan.c
clean:
rm -f main *.o *~
一切似乎都很好并且可以在单个文件中运行,但是当我尝试分别编译它们时,它们彼此“看不到”。 Makefile 似乎也工作得很糟糕,但我看不出任何错误。 你能帮我修一下吗?
当我尝试“make”命令时,它返回“makefile:15: ***缺少分隔符。停止。” 发表评论,什么也不做。
你真的看过你的makefile的第15行吗? 请注意,它与边距齐平,而不是由制表符缩进。
当我使用“clang pan.c -Wall --pedantic -std=c11 -o pan”命令编译 pan.c 时:生成 1 个警告。 /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-l inux-gnu/crt1.o: 在函数 _start': (. text+0x20): 对 main' 的未定义引用
实际上,您的 pan.c 没有 main() 函数。 所以不要试图自己编译它。 怎么样
clang main.c pan.c -Wall --pedantic -std=c11 -o pan
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.