C 这是.h对吗?

C 这是.h对吗?,c,C,奇怪的是,我有这个错误: /tmp/ccq0e479.o:main.c:(.text+0x1a):未定义对的引用 `ft_putchar'collect2:错误:ld返回1退出状态 main.c: #include "biblio.h" int main(int argc, char** argv){ ft_putchar(argv[1]); return 0; } #include <stdio.h> #include "biblio.h"

奇怪的是,我有这个错误:

/tmp/ccq0e479.o:main.c:(.text+0x1a):未定义对的引用
`ft_putchar'collect2:错误:ld返回1退出状态
main.c:

#include "biblio.h"

int main(int argc, char** argv){

        ft_putchar(argv[1]);
        return 0;

}
#include <stdio.h>
#include "biblio.h"

    void ft_putchar (char* str){
            int i = 0;
            while (str[i] != '\0'){
                    write(1,str[i], 1);
                    i++;
            }
            write(1,'\0', 1);

    }
ft\u putchar.c:

#include "biblio.h"

int main(int argc, char** argv){

        ft_putchar(argv[1]);
        return 0;

}
#include <stdio.h>
#include "biblio.h"

    void ft_putchar (char* str){
            int i = 0;
            while (str[i] != '\0'){
                    write(1,str[i], 1);
                    i++;
            }
            write(1,'\0', 1);

    }

仅编译
main.c
是不够的,您需要编译两个文件:

gcc main.c ft_putchar.c -o myprog


更多信息:

仅编译
main.c
是不够的,您需要编译两个文件:

gcc main.c ft_putchar.c -o myprog


更多信息:

你是如何编译的?也许是守卫
\ifndef biblio\u ft
造成的。这是不必要的,因为只要它们都是相同的,您可以随时声明函数原型。gcc main.c我只是将void ft_putchar(char*);在我的.h.so中?我看不出这个代码有任何问题。编译器的搜索路径上是否有较旧版本的
main.c
,并且该版本缺少
#include“biblio.h”
语句?如何?在这个目录中我只有这个main.c。你是如何编译的?也许是守卫
#ifndef biblio ft
造成的。这是不必要的,因为只要它们都是相同的,您可以随时声明函数原型。gcc main.c我只是将void ft_putchar(char*);在我的.h.so中?我看不出这个代码有任何问题。编译器的搜索路径上是否有较旧版本的
main.c
,并且该版本缺少
#include“biblio.h”
语句?如何?我在这个目录中只有这个main.c??即使我使用了一个.h??是的,biblio.h并没有告诉编译器在哪里可以找到代码,它只告诉编译器:在某个地方有一个名为x的函数,这就是原型wtf??即使我使用a.h??是的,biblio.h也不会告诉编译器在哪里找到代码,它只会告诉编译器:在某个地方有一个名为x的函数,这就是原型