gpt4 book ai didi

c - 使用 -D 构建 C 代码时出错

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

当我尝试使用 -D 构建我的 C 代码文件时,出现以下错误。但是,如果我在没有 -D 的情况下构建它,它就可以工作。我不知道为什么。谢谢。 (我的机器是ubuntu12.10,32bit)

gcc c1.c c2.c -D DEBUG

/tmp/ccX04EIf.o:(.data+0x0): multiple definition of `g'
/tmp/cc0j9MoU.o:(.data+0x0): first defined here
collect2: ld returned 1 exit status

这是我的源代码:

global.h

#ifdef DEBUG 
int g = 23;
static int init = 1;
#else
int g;
static int init = 0;
#endif

c1.c

#include "global.h"
int f() {
return g + 1;
}

c2.c

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

int main() {
if (!init) {
g = 37;
}
int t = f();
printf("calling f yields %d\n", t);

return 0;
}

最佳答案

您在头文件中定义变量g,这意味着它将在包含头文件的所有源文件中定义。

而是声明它,比如

extern int g;

然后在单个源文件中定义它。

关于c - 使用 -D 构建 C 代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19583366/

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