1

我需要该代码让我的程序有颜色。但是如果我使用-pedantic,它将无法编译。有没有解决的办法?顺便说一句

gcc -pedantic MP1.c -o 哈哈
MP1.c:在函数“主”中:
MP1.c:65:警告:ISO C90 禁止混合声明和代码
MP1.c:686:30:警告:(每个输入文件只会报告一次)

第 65 行:

int originalAttrs = ConsoleInfo.wAttributes;
4

2 回答 2

3

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

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

修理:

int originalAttrs;
printf("hello\n"); /* For example. */
originalAttrs = ConsoleInfo.wAttributes;
于 2012-08-11T13:31:12.003 回答
0

要么修复代码,使其符合 C90 标准(正如hmjd 的回答所建议的那样),要么告诉 gcc 使用更新版本的标准。

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

如果你使用

gcc -std=c99 -pedantic

或者

gcc -std=c11 -pedantic

它应该工作。

于 2014-07-11T01:50:09.387 回答