我正在尝试声明一个全局变量,并且出于某种原因,编译器并不喜欢这个。它已经说过,当我已经给出类型时它没有存储类或说明符。就在一分钟之前,这些都是本地的主要,但现在我才意识到我需要这些全球化,并且由于某种原因它不会让我这么做。我希望所有函数都能看到这些变量,但我的大多数函数目前都不在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 = '+';
答案 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)必须是常量)。