【发布时间】:2017-03-02 04:36:54
【问题描述】:
根据你说的我的理解;
int var; // it is a declaration because no value stored in var
但是当你这样做的时候;
int var = 90; // it is a definition because var got its value
问这个问题的原因是我正在关注书籍和互联网进行编程。但是,我到处看到定义和声明的不同含义。请澄清一下,如果你知道得更好?
有人说两者都是定义,如果这是为什么下面的程序在 gcc 中给出“重新声明错误”而不是“重新定义错误”的情况。
int main(){
int var = 100;
int var;
return 0;
}
编译时出错:
【问题讨论】:
-
不,你的理解有误。两者都是定义,一个带有初始化器,一个没有。另见:en.cppreference.com/w/cpp/language/definition
-
@SurajJain,它们都是声明,但它们也是定义。两者并不相互排斥。
-
正确的完整答案在 C 和 C++ 之间有所不同。你想要哪个一个?
-
@chux 我想要C相关的答案
-
int var;后跟extern int var;在文件范围内不是定义。
标签: c declaration multiple-definition-error