<error c2059:=“”syntax =“”error =“”:=“”'constant'=“”>使用const int进行编译时</error>

时间:2012-08-02 16:41:14

标签: c++

编译以下代码时出现以下错误:

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

2 个答案:

答案 0 :(得分:25)

NO_DATA可能已在其他地方定义为宏,因此它正在扩展为与编译器的变量名称概念不一致的内容。尝试将NO_DATA重新命名为其他内容。

如果没有这样的冲突,那么代码就可以正常编译,如here所示。

答案 1 :(得分:4)

即使这篇文章有它的年龄:当多个重新定义,即使不管大写/小写,共存时,通常也会发生错误。 这包括解决方案 .vcprojx 文件中潜在的预处理程序定义!。考虑像

这样的东西
  <ItemDefinitionGroup>
    <ClCompile>
      <PreprocessorDefinitions>$(Configuration);%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
  </ItemDefinitionGroup>

在上面提到的文件中。现在,有了#34; Debug&#34;和&#34;发布&#34;配置,你很可能会遇到一些问题和C2059错误的潜在来源。我经历了这种两难困境。