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 回答