我在网上遇到过很多例子,这些例子都extern int x
在 main.c 中,main 函数就在其中。
extern
我知道的唯一用途是在另一个文件中进行声明,并在定义它之后在另一个文件中使用它。
喜欢:啊:extern int x;
交流:int x = 5;
主.c:
#include "a.h" // and start using x
第一种情况对我来说似乎是多余的。
那么,是否有可能extern
在文件中使用不包含在任何其他文件中的变量?
我在网上遇到过很多例子,这些例子都extern int x
在 main.c 中,main 函数就在其中。
extern
我知道的唯一用途是在另一个文件中进行声明,并在定义它之后在另一个文件中使用它。
喜欢:啊:extern int x;
交流:int x = 5;
主.c:
#include "a.h" // and start using x
第一种情况对我来说似乎是多余的。
那么,是否有可能extern
在文件中使用不包含在任何其他文件中的变量?
extern 变量基本上有两个功能,一个是使用另一个文件中的变量,另一个是访问全局变量,如下面的代码所示。
int x=10;
int main()
{
int x=20;
cout<<x; //refers to x=20
if(x==20)
{
extern int x;
cout<<x; //refers to the global x that is x=10
}
}
extern
告诉编译器x
存在于不同的模块中,应该从其他地方链接。将它直接放在 main.c 中只是避免拉入标题(无论如何都会包含在内)
就像在标题中一样,x
仍然需要存在于另一个未定义的 .c模块中extern
。
当然。在文件中使用extern
可让您在该文件中使用该变量。它不必包含在其他任何地方。
使用extern
使对象具有外部联系;要使用对象(而不是值或类型)实例化模板,对象必须具有外部链接(至少在 C++03 中)。命名空间范围内定义的大多数对象都有全局链接,但 const 对象没有。所以你有类似的东西:
template <char const* n>
class Toto { /* ... */ };
char const n1[] = "abc";
Toto<n1> t1; // Illegal...
extern char const n2[] = "xyz";
Toto<n2> t2; // Legal...
这是一种特殊情况,但它导致我(一次或两次)
extern
在源文件中的未命名命名空间中使用。