标题:调用SetConsoleTextAttribute后为何报错
取消只看楼主
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
结帖率:66.67%
 问题点数:0 回复次数:4 
调用SetConsoleTextAttribute后为何报错
#include<stdio.h>
#include <windows.h>

int main (int argc, char *argv[])
{
    HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(h,FOREGROUND_RED|FOREGROUND_GREEN);
    char s[]="test";
    printf("character %s.\n",s);
}
提示一下错误
1>d:\learn_c\study_c\study_c\study.c(8): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>d:\learn_c\study_c\study_c\study.c(9): error C2065: “s”: 未声明的标识符

如果把 char s[]="test\n";去掉
       printf("character %s.\n",s);改成printf("character test.\n");就没问题了

同样如果直接把HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(h,FOREGROUND_RED|FOREGROUND_GREEN);
这两句注释掉也没问题,只是字体颜色不会改变。
为何会出现这样的问题
搜索更多相关主题的帖子: character include 
2017-03-21 15:49
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
得分:0 
后缀是.c
2017-03-21 15:59
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
得分:0 
char s[]="test";放在前面确实可以,但是用了句柄之后发生了什么?为何不能通过编译?
2017-03-21 16:03
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
得分:0 
我的是vs2010,win10系统
2017-03-21 16:04
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
得分:0 
回复 4楼 吹水佬
版主用的哪个编译器,难道编译器差别有这么大
2017-03-21 16:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475328-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023592 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved