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

时间:2017-12-07 12:03:43

标签: c linux makefile

我编写了一个函数,如果字符串是否为palindrom,则会检查。

do {
    let jsonData = try JSONSerialization.data(withJSONObject: data)
    let decoder = JSONDecoder()
    let addComments = try decoder.decode([AddComment].self, from: jsonData)
    print(addComments[0])

} catch {
    print(error)
}

我也创建了funs.h

//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
#include <stdbool.h>
bool palindrom();

我还创建了makefile:

#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;
}

一切似乎都很好并且在单个文件中工作,但是当我尝试单独编译它们时,它们并没有看到&#34;彼此。 Makefile似乎也很糟糕,但我看不出任何错误。你能帮我解决一下吗?

1 个答案:

答案 0 :(得分:4)

  

当我尝试“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