首页 > 解决方案 > 在 Xcode 中编译时出现全局变量错误(C 编程)

问题描述

我正在尝试理解“全局变量”,并且正在运行教科书中的程序:

它在“Xcode Version 9.3 (9E145)”中给出了一个错误,错误是:

将“glob”重新定义为不同类型的符号

#include <stdio.h>

void add(void);
void sub(void);

int glob = 10;

int main(void)
{
  add();
  printf("Val = %d\n", glob);
  sub();
  printf("Val = %d\n", glob);
  return 0;
}

void add(void)
{
  glob++;
}

void sub(void)
{
  glob--;
} 

我有个问题:

为什么 Xcode 会给出这个错误?

标签: cxcodevariablesglobal-variables

解决方案


不要问为什么。但是你的一个编译器(或者它可能只是一个雄心勃勃的语法高亮器)非常清楚地确信以前被glob视为其他东西的标识符。
搜索,我没有发现任何明显的东西,奇怪的是,在只有最广泛使用的包含的短代码中,两个编译器有不同的意见。

但是解决问题的直接方法应该是简单地重命名glob 为不同的名称。使用更长的名称,并添加更多建议,不会有什么坏处。一个稍微夸张的提议是

int globalvariableofunusedname = 10;

这仅回答您的第一个问题。对于第二个(如果你把它留在这里),请检查似是而非的评论。但是,我建议将其分成自己的问题帖子。


推荐阅读