【发布时间】:2012-05-02 02:39:24
【问题描述】:
我写了一个程序,它接受一个输入字符并输出那个字符,像这样
int ch = getchar();
printf("%c", ch);
效果和我预期的一样。然后我决定先欢迎并打印Hello。
printf("Hello!\n");
int ch = getchar();
printf("%c", ch);
令我惊讶的是,这导致编译器抛出两个错误:
错误 C2065:“ch”:未声明的标识符
错误 C2143:语法错误:缺少“;”在“类型”之前
我不明白为什么添加第一行会导致这种情况发生。无论如何,我重构了程序以摆脱 int 声明,错误神奇地消失了。
printf("Hello!\n");
printf("%c", getchar());
发生了什么事?导致这些错误出现然后消失的魔法是什么?
【问题讨论】:
-
你用的是什么编译器?此代码在 gcc 4.4.3 上无错误。
-
@AdamCadien 我正在使用 Visual Studio 2010 附带的任何版本的 MSVC。