0

「Unicode 文字セットを使用する」が選択されている C++ プロジェクト (VC++) に取り組んでいます。

ここに画像の説明を入力

これにより、UNICODE と _UNICODE が設定されます。同時に、含まれているサードパーティの .h ファイルにはたまたま列挙型に「UNICODE」が含まれており、これら 2 つが競合しています。

enum Encoding {
  ...
  UNICODE              = 17,  // Teragram Unicode
  ...
}

列挙型で使用したい UNICODE が数字の 1 に変換されるため、IDE は「エラー C2059: 構文エラー: '定数'」と不平を言います。列挙型名をエスケープする方法はありますか? これを解決するにはどうすればよいですか?

4

2 に答える 2

1

You can add a statement:

#undef UNICODE

before the enum. The problem here is that UNICODE will now be undefined and so for instance your TCHAR will become regular char for instance. This is a horrible name for an enum value. You will have to play around with the order of the includes quite a lot to avoid this.

于 2013-05-17T00:05:49.950 に答える
0

効率は別として、これは c/c++ enum の本当の欠点です。

このような問題に直面するたびに、次の 2 つの解決策を試します。

  1. 名前空間を追加してそれらを保護します。

  2. 列挙名のプレフィックスを追加します: ENCODING_UNICODE

于 2013-05-17T00:41:05.010 に答える