gpt4 book ai didi

c - 如何在多个源文件中包含头文件中声明的结构变量?

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:29 25 4
gpt4 key购买 nike

我需要一个在头文件中声明和定义的结构变量,以便从多个源文件访问,但我收到链接器错误。我把小源代码放在这里。链接器错误是

main.obj : error LNK2005: _a 已经在 library.obj 中定义

fatal error LNK1169:找到一个或多个多重定义的符号

标题.h

struct Student {
char *FirstName;
char *LastName;
};

struct Student a = {"John", "Jackson"};

库.c

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

void PrintStudentName(struct Student *name)
{
printf("%s\n%s\n", name->FirstName, name->LastName);
}

主.c

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


void PrintStudentName(struct Student *name);

int main()
{
PrintStudentName(&a);
return 0;
}

最佳答案

你应该替换标题中的这个定义行

struct Student a = {"John", "Jackson"};

用这个声明:

extern struct Student a;

这声明了一个类型为 struct Student 的全局变量。

将定义移至其中一个 C 文件以完成修复:

// This goes into one of the C files, does not matter which one.
struct Student a = {"John", "Jackson"};

关于c - 如何在多个源文件中包含头文件中声明的结构变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30157723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com