编译器错误与win32 COORD结构?

时间:2012-09-14 13:35:55

标签: c winapi

我正在尝试使用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

有什么想法?提前谢谢。

2 个答案:

答案 0 :(得分:3)

我编译了这个并且它工作正常。

但是,如果我将X或Y定义为宏,例如

#define X 2
#define Y 15

然后我得到与你完全相同的错误。你有这些宏吗?

答案 1 :(得分:1)

错误C2059是一个解析错误,常量是意外的。你可能在某个地方有一些垃圾字符,文件中较早的错误匹配括号或其他东西。

请参阅the documentation

  

语法错误:'token'

     

令牌导致语法错误。

     

要确定原因,请不仅检查错误消息中列出的行,还要检查其上方的行。