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あり、構造体です。上記のエラーは、2 つの割り当て (pos.X = 0 および pox.Y = 25) に対して 2 回発生します。以下を使用すると、完全にコンパイルされます。

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

何かご意見は ??前もって感謝します。

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 に答える