Я получаю следующие ошибки, когда пытаюсь построить мои файлы кода c с -D. Но, если я построю его без -D, он работает. Я не знаю почему. Благодарю. (Моя машина ubuntu12.10, 32bit)Ошибка при создании кода c с -D
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;
}
Почему пространство между '-D' и' DEBUG'? –
@HowChen Это имеет значение? № – RedX
@ Просто, но он сказал, что это работает без -D –