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的函数,这就是原型