% gcc -std=c89 -o main main.c
/tmp/cccuTfCk.o: In function `main':
main_c11e5.c:(.text+0x3c): undefined reference to `swap'
collect2: error: ld returned 1 exit status
这是我的功能文件
#include <stdio.h>
void swap(int *p, int *q){
int a;
int b;
*p = a;
*q = b;
*p = b;
*q = a;
return p ,q;
}
这是我的主文件
#include <stdio.h>
#include "swap.h"
int main(){
int i;
int j;
i = 9;
j = 100;
printf("i value: %i\n j value: %i\n", i, j);
swap (&i,&j);
printf("i value: %i\n",i);
printf("j value: %i\n",j);
return 0;
}
我创建了
// swap.h
void swap(int *p, int *q);
我只是不知道为什么我会不断收到这样的错误。
我以为我已经指向对方了。
编译很奇怪还是我的编码不清楚?
谢谢。
答案 0 :(得分:2)
有多个错误。
1)您需要在已定义交换功能的第二个文件中包含swap.h。
2)您仅编译main.c文件,但在另一个文件中定义了交换功能。这就是原因,您将获得对交换功能的未定义引用。您需要同时编译这两个文件(gcc -std = c89 -o main main.c name_of_second_file)
3)您将swap()声明为void。这意味着您不应从该函数返回任何值,并且在将i和j的地址传递给交换函数时也无需返回。
答案 1 :(得分:0)
<div style="width:40px; height:40px; background-color:black;" onclick="bottomscroll()"> </div>
<div id="fullpage">
<section>
<h1>text1</h1>
</section>
<section>
<h1>text2</h1>
</section>
<section>
<h1>text3</h1>
</section>
<section>
<h1>text4</h1>
</section>
</div>
您无法返回任何内容,因为您声明为无效的返回函数