C回文程序-对main的未定义引用

C回文程序-对main的未定义引用,c,linux,makefile,C,Linux,Makefile,我编写了一个函数,用于检查字符字符串是否为回文 //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')

我编写了一个函数,用于检查字符字符串是否为回文

//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;
}
一切看起来都很好,都在一个文件中工作,但当我试图单独编译它们时,它们彼此“看不见”。Makefile似乎也很糟糕,但我看不出有任何错误。你能帮我修一下吗

当我尝试“make”命令时,它返回“makefile:15:**missing separator.Stop.”注释而不执行任何操作

你真的看过makefile的第15行了吗?请注意,它与边距齐平,而不是由制表符缩进

当我在编译pan.c时使用“铿锵的pan.c-Wall--pedantic-std=c11-opan”命令:生成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()函数。所以不要试图自己编译它。怎么样


clangmain.c pan.c-Wall--pedantic-std=c11-o pan

bool palindrom()
定义一个函数,该函数可以接收任意数量的参数,默认情况下所有参数都为
int
。所以这是错误的…您错过了
bool-palindrom()中的某些内容声明,应该是
bool回文(char*)
@MateuszTrzeciak:但当我试图单独编译它们时,它们彼此“看不见”,编译过程中出现了什么错误?我更改了它,但仍然有一些错误:(将这些重要的诊断信息放到你的帖子中。“不起作用”不是问题描述。
//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

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 *~