【发布时间】:2016-07-14 13:04:32
【问题描述】:
我有以下一段代码,我在代码中需要使用它们的位置之后定义了几个外部(全局)变量。 为此,我使用关键字 extern 来声明它们而不为它们保留存储空间。
int main(int argc,char *argv[])
{
extern int a;
extern double b;
/* ...use the variables somehow... */
{
int a = 10;
static double b = 2.0;
如果我这样做了,编译器会抱怨我将 b 变量定义为静态的(因此具有内部链接),而在我声明它是 extern 之前。 但是,如果我在使用它之前反转顺序并定义它并在 main 中声明它(我知道这是可选的......)一切都很好。
static double b = 2.0;
int main(int argc,char *argv[])
{
extern int a;
extern double b;
/* ...use the variables somehow... */
{
int a = 10;
如果我想在定义之前使用外部私有变量(即具有内部链接)怎么办?是否被禁止?为什么?
【问题讨论】:
-
这里有一些有用的读物stackoverflow.com/questions/2841762/…也许是重复的?
-
与问题无关,但您的主要签名很奇怪:
int main void。不需要void -
@SurvivalMachine 只是一个错字..已编辑,谢谢。
-
请投票反对的人提供理由。
-
只是问
external private variable这有什么意义?如果是外部的,它是如何私有的?
标签: c static global-variables external