我正在尝试使用Win32 Console API在Windows中为控制台应用程序实现进度条。我的问题是编译器给出错误error C2059: syntax error : 'constant'
。相关代码如下。
void updateBar(PBAR * pbr, float ratio){
COORD pos;
pos.X = 0;
pos.Y = 25;
SetConsoleCursorPosition(hConOut, pos);
}
COORD
是用于表示坐标对的Win32结构。 hConOut
是一个全局变量,PBAR
是一个结构。对于两个赋值,上面的误差给出两次(pos.X = 0,pox.Y = 25)。如果我使用以下内容,它会完美编译。
void updateBar(PBAR * pbr, float ratio){
COORD pos = {0, 25};
SetConsoleCursorPosition(hConOut, pos);
}
我真的无法理解这个的原因。我的意思是它只是一个结构成员的任务,对吧?如果我执行POINT pt; pt.x = 0; pt.y = 25
之类的操作,它会完美地编译。 POINT
只是另一种结构。
我在Windows 7上使用visual studio 2010,编译器是:
Microsoft(R)32位C / C ++优化编译器版本16.00.30319.01 for 80x86
有什么想法?提前谢谢。
答案 0 :(得分:3)
我编译了这个并且它工作正常。
但是,如果我将X或Y定义为宏,例如
#define X 2
#define Y 15
然后我得到与你完全相同的错误。你有这些宏吗?
答案 1 :(得分:1)
错误C2059是一个解析错误,常量是意外的。你可能在某个地方有一些垃圾字符,文件中较早的错误匹配括号或其他东西。
语法错误:'token'
令牌导致语法错误。
要确定原因,请不仅检查错误消息中列出的行,还要检查其上方的行。