未定义对功能文件错误C的引用(编译)

时间:2018-10-22 16:46:28

标签: c

% 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);

我只是不知道为什么我会不断收到这样的错误。

我以为我已经指向对方了。

编译很奇怪还是我的编码不清楚?

谢谢。

2 个答案:

答案 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>

您无法返回任何内容,因为您声明为无效的返回函数