在 C 中,你可以。当然这只是琐事,在现实生活中你不应该这样做。
声明某事
extern
可以在任何地方完成,并且总是将声明的变量链接到该名称的全局变量。
#include <stdio.h>
int i = 3;
int main( int argc, char **argv ) {
int i = 6;
printf( "%d\n", i );
{ // need to introduce a new scope
extern int i; // shadowing is allowed here.
printf( "%d\n", i );
}
return 0;
}
在 C++ 中,全局始终可用
::i
.
在 C 中没有办法。 实际上,引入一个额外的范围并使用
extern
声明你可以,请参阅@Potatoswatter 的回答。
在 C++ 中,您可以使用
::
(如 ::m=15
)在全局命名空间中查找标识符,顺便说一句,这与用于访问“常规”命名空间成员的运算符相同(std::cout
,.. .).
另外,它是
int main()
。
在 C 中你不需要。给他们一个不同的名字,这很令人困惑,而且是一种不好的做法。
在
m
被重新定义之前,相同的名称无论如何都是不好的做法,无论如何您都在访问全局变量
int m = 20;
int main(void)
{
printf("%d\n", m); // 20 would be printed here
// Max you can do
int m = 30;
}