首页 > 解决方案 > 链接中的多重定义

问题描述

我是链接的初学者,假设我有两个 .c 文件

file1.c 是

#include <stdio.h>
#include "file2.c"


int main(int argc, char *argv[]) 
{
    int a = function2();
    printf("%d",a);
    return 0;
}

和 file2.c 是

int function2() 
{ 
    return 2018;
}

当我编译时,有一个链接器错误,它是function2的多个定义,但我只在file2.c中定义了一次函数?

标签: clinker

解决方案


尝试这样的事情:

#include <stdio.h>
#include "file2.h"

int main(int argc, char *argv[]) 
{
    int a = function2();
    printf("%d",a);
    return 0;
}

文件2.h:

extern int function2(void);

和 file2.c 是

#include "file2.h"

int function2(void) 
{ 
    return 2018;
}

然后将其链接在一起。


推荐阅读