【发布时间】:2019-01-05 17:21:23
【问题描述】:
我有 5 个文件: 啊:
extern const int a;
a.cpp:
#include "a.h"
const int a = 1;
b.h:
extern const int a;
extern const int b;
b.cpp:
#include "b.h"
const int b = a + 1;
main.cpp:
#include <stdio.h>
#include "a.h"
#include "b.h"
int c = a + 1;
int d = b + 1;
int main() {
printf("c: %d\n", c);
printf("d: %d\n", d);
return 0;
}
我按照以下顺序编译它们:
gcc -c *.cpp
gcc a.o b.o main.o -o after
gcc main.o a.o b.o -o before
当我运行after 和before 时:
./after
c: 2
d: 3
./before
c: 2
d: 1
其他人可以解释这些全局变量的联系吗?
【问题讨论】:
-
不使用全局变量的一个很好的论据。