14

以下のコードをコンパイルすると、次のエラーが発生します。

3>c:\hedge\hedge\hedge\AisTarget.h(22) : error C2059: syntax error : 'constant'
3>c:\hedge\hedge\hedge\AisTarget.h(22) : error C2238: unexpected token(s) preceding ';'

#if !defined(AisTarget_h)
#define AisTarget_h

#include "GeneralAviationItems.h"
#include <string>

namespace HEDGE {
    using namespace GeneralAviation; 

    class AisTarget : public WaypointLatLon {
        public:
            static const int NO_DATA = -1000; //here is the error
    };    
} // end namespace HEDGE

#endif
4

2 に答える 2

30

すでに他の場所でマクロとして定義されている可能性が高いNO_DATAため、コンパイラの変数名の概念と一致しないものに拡張されています。別の名前NO_DATAに変更してみてください。

このような競合がなければ、ここに示すように、コードはそのままで正常にコンパイルされます。

于 2012-08-02T16:45:53.357 に答える
5

この投稿に年齢があっても: 大文字/小文字に関係なく、複数の再定義が共存すると、通常、エラーが発生する可能性があります。これには、ソリューションの.vcprojxファイル内の潜在的なプリプロセッサ定義が含まれます! . 次のようなものを検討してください

  <ItemDefinitionGroup>
    <ClCompile>
      <PreprocessorDefinitions>$(Configuration);%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
  </ItemDefinitionGroup>

上記のファイルにあります。現在、「デバッグ」および「リリース」構成を使用すると、おそらくいくつかの問題に遭遇し、C2059 エラーの潜在的な原因になります。私はまさにこのジレンマを経験しました。

于 2016-04-21T07:32:58.190 に答える