我需要该代码让我的程序有颜色。但是如果我使用-pedantic,它将无法编译。有没有解决的办法?顺便说一句
gcc -pedantic MP1.c -o 哈哈 MP1.c:在函数“主”中: MP1.c:65:警告:ISO C90 禁止混合声明和代码 MP1.c:686:30:警告:(每个输入文件只会报告一次)
第 65 行:
int originalAttrs = ConsoleInfo.wAttributes;
将声明移动originalAttrs
到使用它的范围的顶部。该错误与使用 of 无关,ConsoleInfo.wAttributes
但与originalAttrs
. 没有看到整个代码,它可能是这样的:
printf("hello\n"); /* For example. */
int originalAttrs = ConsoleInfo.wAttributes;
修理:
int originalAttrs;
printf("hello\n"); /* For example. */
originalAttrs = ConsoleInfo.wAttributes;
要么修复代码,使其符合 C90 标准(正如hmjd 的回答所建议的那样),要么告诉 gcc 使用更新版本的标准。
C 确实允许以 C99 标准开头的混合声明和语句。
如果你使用
gcc -std=c99 -pedantic
或者
gcc -std=c11 -pedantic
它应该工作。