繁体   English   中英

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

[英]Compiler errors when declaring global variables

我正在尝试声明一个全局变量,由于某种原因,编译器不喜欢这样做。 就是说,当我已经给定类型时,它没有存储类或说明符。 在一分钟之前,这些是本地的,但是现在我才意识到我将需要全局的这些,并且由于某种原因,它不允许我这样做。 我希望所有功能都能看到这些变量,但是我的大多数功能目前不在主要范围内。 因此,我希望它们由所有功能共享。

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 = '+';

您应该将代码放在这样的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 = '+';
}

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

#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) 必须是一个常量 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM