【发布时间】:2011-01-28 08:56:37
【问题描述】:
假设我有这三个文件:
啊.h
//a.h header
#include <stdio.h>
int int_variable;
void a_f()
{
printf("int_variable: %d\n", int_variable)
int_variable++;
}
b.h
//b.h header
#include <stdio.h>
int int_variable;
void b_f()
{
printf("int_variable: %d\n", int_variable)
int_variable++;
}
main.c
//main.c
#include "a.h"
#include "b.h"
int main()
{
a_f();
b_f();
return 0;
}
为什么在 C++ 中编译会产生重定义错误,而在 C 中不会? 我是 C++ 开发人员,那么在 C++ 中对我来说是有意义的,但为什么在 C 中这不是错误?
当我执行 C 生成的代码时,输出是:
int 变量:0
int 变量:1
【问题讨论】:
-
重复(有点)。请参阅 stackoverflow.com/questions/2331584/… 和 stackoverflow.com/questions/1987413/…。答案是:C 有初步定义,C++ 没有。
-
抱歉,我确实搜索过,但我发现我使用了错误的关键字:P,谢谢 Alok。
-
没关系,有时这样的问题很难搜索。要是你搜索过“暂定定义”就好了:-)
标签: c++ c compilation global-variables compiler-errors