我有以下一段代码,我在需要使用它们的代码之后定义了几个外部(全局)变量。 为了做到这一点,我使用关键字extern宣布他们没有保留他们的存储。static中的关键字和外部变量C
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变量是静态的(因而具有内部链接),当在我宣布它为外部量。 但是,如果我倒序并在使用它之前将其定义并在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;
那么如果我想在定义它之前使用外部私有变量(即与内部链接)呢?这是禁止的,为什么?
一些有用的阅读在这里http://stackoverflow.com/questions/2841762/why-wont-extern-link-to-a-static-variable重复或许? – Bathsheba
与问题无关,但您的主签名很奇怪:'int main void'。没有必要'void' – SurvivalMachine
@SurvivalMachine只是一个拼写错误,谢谢。 – Luca