1

我正在尝试使用 Win32 控制台 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 an 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 用于 80x86

有什么想法吗 ??提前致谢。

4

2 回答 2

3

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

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

#define X 2
#define Y 15

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

于 2012-09-14T13:50:25.883 回答
1

错误 C2059 是一个解析错误,该常量是意外的。您可能在某处有一些垃圾字符,文件中前面有一个不匹配的大括号,或者其他什么。

请参阅文档

语法错误:'令牌'

令牌导致语法错误。

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

于 2012-09-14T13:49:04.600 回答