gpt4 book ai didi

c - 如何处理两个项目之间共有的全局变量?

转载 作者:行者123 更新时间:2023-11-30 14:29:00 28 4
gpt4 key购买 nike

我有两个用 C 编写的项目:客户端和服务器端,两者都包含许多常见的全局变量。我想编写一个类(使用接口(interface) Transaction 的 clientbot 和 serverbot),它将调用每个项目的主要函数。

我已将所有常见的全局变量移至头文件中并将其包含在两个项目中。但在构建时,它给我带来了链接错误。

Error 3 error LNK2005: "int g_nBytestoSend" (?g_nBytestoSend@@3HA) already defined in transimpl.obj agentBot.obj

谁能建议我应该做什么?

最佳答案

您不应该将实际变量放在 header 中,而只能将这些变量的 extern 声明放在其中。将实际变量放在单独的 .c.cpp 文件中并与其链接。

在 header (我们称之为 globals.h)中,您可以放置​​此声明:

extern int g_nBytesToSend;

然后创建一个新的代码文件来保存实际变量(例如 global.c):

int g_nBytesToSend;

假设您有三个代码文件 server.cclient.cbot.c 并且您正在使用 gcc。你可以这样构建:

gcc -o server.o -c server.c
gcc -o client.o -c client.c
gcc -o bot.o -c bot.c
gcc -o globals.o -c globals.c
gcc -o mybot server.o client.o bot.o globals.o

(尽量减少全局变量的数量。)

关于c - 如何处理两个项目之间共有的全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5308668/

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