gcc - 学究不会编译,ISO C90禁止混合声明和代码如何解决这个问题?

时间:2012-08-11 13:29:06

标签: c gcc

我的程序代码需要有颜色。但如果我使用-pedantic它就不会编译。有没有解决的办法?它的顺便说一句

gcc -pedantic MP1.c -o hahah
MP1.c: In function `main':
MP1.c:65: warning: ISO C90 forbids mixed declarations and code
MP1.c:686:30: warning: (this will be reported only once per input file)

第65行:

int originalAttrs = ConsoleInfo.wAttributes;

2 个答案:

答案 0 :(得分:4)

originalAttrs的声明移动到使用它的作用域的顶部。该错误与使用ConsoleInfo.wAttributes无关,但与originalAttrs声明的位置无关。没有看到整个代码,它可能是这样的:

printf("hello\n"); /* For example. */
int originalAttrs = ConsoleInfo.wAttributes;

修复:

int originalAttrs;
printf("hello\n"); /* For example. */
originalAttrs = ConsoleInfo.wAttributes;

答案 1 :(得分:0)

修复代码以使其符合C90标准(如hmjd's answer建议的那样),或告诉gcc使用更新版本的标准。

C允许混合声明和以C99标准开头的语句。

如果您使用

gcc -std=c99 -pedantic

gcc -std=c11 -pedantic

它应该有用。