ld 返回 1 退出状态,斐波那契搜索
ld returned 1 exit status, fibonacci search
我认为我的 "dear" 代码有问题,我正在使用代码块,当我尝试编译时,编译器向我显示此错误:"ld returned 1 exit status"
main.c
#include <stdio.h>
#include <stdlib.h>
#include "C:\Users\alexl_000\Desktop\fibmodnopoin\fib.h"
int main(){
int position;
int *fib_ptr,fib=2;
char confirm='y';
fib_ptr = &fib;
printf("find Fibonacci's number by it's position \n");
while(confirm=='y'){
printf("insert position:");
scanf("%d", &position);
printf("%d \n",position);
fib=fibonacci(position);
printf("%d \n", *fib_ptr);
printf("find new number?");
scanf("%s", &confirm);
}
return 0;
}
fib.h
#ifndef FIB_H_INCLUDED
#define FIB_H_INCLUDED
#endif // FIB_H_INCLUDED
int fibonacci(int );
fib.c
#include <stdio.h>
#include <stdlib.h>
int fibonacci(int position){
int fib1=1, fib2=1, count=3, fib;
if (posizione==0)
fib=0;
else if (position==1||2 )
fib=1;
if (position>2){
while(count <= position){
count++;
fib=fib1+fib2;
fib2=fib1;
fib1=fib;
}
}
return fib ;
}
编译器
||=== Build: Debug in fibmodnopoin (compiler: GNU GCC Compiler) ===|
||error: ld returned 1 exit status|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
之前由于 "debug" 和 "release" 框未选中而出现链接问题
reference not defined to "fibonacci"
但我解决了:右键单击 fib.c
or\and fib.h
,属性->构建
我真的没有找到解决第一个问题的方法...
感谢关注
这是一个链接器错误。
您已经向主程序提供了函数的声明(原型),但未提供定义。您需要编译这两个文件并将目标文件提供给链接器 (ld)。
在linux中,一起编译如下
gcc main.c fib.c -o fib
在 Fib.c 中,您正在检查未在任何地方声明的 "posizione" 变量。一旦你改变了它,你应该能够重建模块,然后重建项目。
作为旁注,我建议检查 fib.h 中的 include guard。通常,您会将声明放在 ifdef 块中,以确保每个文件只声明一次变量。
代码正确,我使用了命令提示符和代码
gcc main.c fib.c -o fib.exe
它有效,所以我认为这是 CodeBlocks 的错误。可能是什么问题?
我认为我的 "dear" 代码有问题,我正在使用代码块,当我尝试编译时,编译器向我显示此错误:"ld returned 1 exit status"
main.c
#include <stdio.h>
#include <stdlib.h>
#include "C:\Users\alexl_000\Desktop\fibmodnopoin\fib.h"
int main(){
int position;
int *fib_ptr,fib=2;
char confirm='y';
fib_ptr = &fib;
printf("find Fibonacci's number by it's position \n");
while(confirm=='y'){
printf("insert position:");
scanf("%d", &position);
printf("%d \n",position);
fib=fibonacci(position);
printf("%d \n", *fib_ptr);
printf("find new number?");
scanf("%s", &confirm);
}
return 0;
}
fib.h
#ifndef FIB_H_INCLUDED
#define FIB_H_INCLUDED
#endif // FIB_H_INCLUDED
int fibonacci(int );
fib.c
#include <stdio.h>
#include <stdlib.h>
int fibonacci(int position){
int fib1=1, fib2=1, count=3, fib;
if (posizione==0)
fib=0;
else if (position==1||2 )
fib=1;
if (position>2){
while(count <= position){
count++;
fib=fib1+fib2;
fib2=fib1;
fib1=fib;
}
}
return fib ;
}
编译器
||=== Build: Debug in fibmodnopoin (compiler: GNU GCC Compiler) ===|
||error: ld returned 1 exit status|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
之前由于 "debug" 和 "release" 框未选中而出现链接问题
reference not defined to "fibonacci"
但我解决了:右键单击 fib.c
or\and fib.h
,属性->构建
我真的没有找到解决第一个问题的方法...
感谢关注
这是一个链接器错误。 您已经向主程序提供了函数的声明(原型),但未提供定义。您需要编译这两个文件并将目标文件提供给链接器 (ld)。 在linux中,一起编译如下
gcc main.c fib.c -o fib
在 Fib.c 中,您正在检查未在任何地方声明的 "posizione" 变量。一旦你改变了它,你应该能够重建模块,然后重建项目。
作为旁注,我建议检查 fib.h 中的 include guard。通常,您会将声明放在 ifdef 块中,以确保每个文件只声明一次变量。
代码正确,我使用了命令提示符和代码
gcc main.c fib.c -o fib.exe
它有效,所以我认为这是 CodeBlocks 的错误。可能是什么问题?