声明全局变量时编译器错误

时间:2017-02-03 03:46:50

标签: c variables global

我正在尝试声明一个全局变量,并且出于某种原因,编译器并不喜欢这个。它已经说过,当我已经给出类型时它没有存储类或说明符。就在一分钟之前,这些都是本地的主要,但现在我才意识到我需要这些全球化,并且由于某种原因它不会让我这么做。我希望所有函数都能看到这些变量,但我的大多数函数目前都不在main中。所以我希望它们能被所有功能共享。

char pa, pb, pc, pd, pe, pf, pg, ph, pi, pj, pk, pl, pm, pn, po;
    pa = 'o';
    pb = pc = pd = pe = pf = pg = ph = pi = pj = pk = pl = pm = pn = po = '+';

2 个答案:

答案 0 :(得分:1)

你应该把你的代码放在像这样的main()函数中。 我能够在Windows 7上编译它。

#include <stdio.h>

/* Declare global variables for this module */
char pa, pb, pc, pd, pe, pf, pg, ph, pi, pj, pk, pl, pm, pn, po;

int main(int argc, char *argv[])
{

    /* Assign your global variables */

    pa = 'o';
    pb = pc = pd = pe = pf = pg = ph = pi = pj = pk = pl = pm = pn = po = '+';
}

答案 1 :(得分:1)

您可以在函数外声明和分配(单个)变量。 将您的声明转换为单个声明:

#include <stdio.h>

char  pa = 'o';
char  pb = '+';
char  pc = '+';
/* many others, omitted for brevity */

int main() {
  printf("%c, %c", pa, pb);
}

实现你想要的,而不需要分割声明和作业。

请注意:

char  pb = '+';
char  pc = pb;
在某种意义上,

可以工作:当编译器看到char pc=pb:时,它具有声明pc并将其初始化为pb所需的所有信息。但它不是因为它不够聪明(更可能是因为语言说那种初始化器(pb)必须是常量)。