5

現在、次のエラーが発生しています。

c:\program files\microsoft visual studio\vc98\include\iomanip(15): エラー C2059: >構文エラー: '名前空間'

c:\program files\microsoft visual studio\vc98\include\iomanip(15): エラー C2334: >'{' の前に予期しないトークンがあります。見かけの関数本体をスキップする

c:\program files\microsoft visual studio\vc98\include\math.h(36): エラー C2059: 構文 > エラー: '文字列'

c:\program files\microsoft visual studio\vc98\include\math.h(36): エラー C2334: 予期しない >token(s) before '{'; 見かけの関数本体をスキップする

それらはすべて標準ライブラリのヘッダー ファイルに含まれているため、読み取り専用であるため、修正方法がわかりません。

どんな助けでも素晴らしいでしょう。

4

4 に答える 4

7

C/C++ では、ソース コードが実際に解析される前にプリプロセッサが実行され、#include基本的に異なるファイルをつなぎ合わせるだけです。この結果の 1 つは、C/C++ は、あるファイル内の aが別の (インクルードされた) ファイル内の{a に一致することに完全に満足しているということです。}もちろん、誰もこれを行うことはありません (または、行った場合は撃たれる必要があります) が、C/C++ プリプロセッサは非常に単純であるため、技術的には許可されています。

この結果の 1 つは、自分のファイルの 1 つの構文エラーが、別のファイルの構文エラーのように見える可能性があることです。;クラス定義の後に aを置くのを忘れたときに、私自身がこれに遭遇することがよくあります。しかし、不一致{}の s は(あなたが発見したように)同じ効果をもたらす可能性があります。

そのため、インクルードされたファイル (標準ライブラリなど) におそらく存在しないと思われるエラーを見つけた場合、最初に確認する場所は、そのファイルの直前にインクルードされていたファイルです。ステートメントを並べ替える#includeと、エラーの原因を絞り込むのに役立つ場合もあります。

于 2012-05-07T14:26:53.510 に答える
1

このエラーが発生しましたが、定義していたメソッドの名前が window.h で既にマクロとして定義されていることが問題であることがわかりました。だから私はそれを #undef しなければなりませんでした。

于 2020-01-15T09:15:37.200 に答える