coe*_*udo 9 c c++ compiler-errors compilation global-variables
假设我有这三个文件:
啊
//a.h header
#include <stdio.h>
int int_variable;
void a_f()
{
printf("int_variable: %d\n", int_variable)
int_variable++;
}
Run Code Online (Sandbox Code Playgroud)
BH
//b.h header
#include <stdio.h>
int int_variable;
void b_f()
{
printf("int_variable: %d\n", int_variable)
int_variable++;
}
Run Code Online (Sandbox Code Playgroud)
main.c中
//main.c
#include "a.h"
#include "b.h"
int main()
{
a_f();
b_f();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么在C++中编译会产生重定义错误,但在C中却没有?我是C++开发人员,然后在C++中对我有意义,但为什么在C中这不是错误?
当我执行C生成的代码时,输出是:
int变量:0
int变量:1
在C中,这两个变量实际上组合成一个变量,因为它们都没有显式初始化.
如果您将两个h文件都更改为:
// a.h
int int_variable = 0;
Run Code Online (Sandbox Code Playgroud)
和:
// b.h
int int_variable = 0;
Run Code Online (Sandbox Code Playgroud)
你会得到一个重新定义的错误.
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |