编译以下代码时出现以下错误:
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
答案 0 :(得分:25)
NO_DATA
可能已在其他地方定义为宏,因此它正在扩展为与编译器的变量名称概念不一致的内容。尝试将NO_DATA
重新命名为其他内容。
如果没有这样的冲突,那么代码就可以正常编译,如here所示。
答案 1 :(得分:4)
即使这篇文章有它的年龄:当多个重新定义,即使不管大写/小写,共存时,通常也会发生错误。 这包括解决方案 .vcprojx 文件中潜在的预处理程序定义!。考虑像
这样的东西 <ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>$(Configuration);%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
在上面提到的文件中。现在,有了#34; Debug&#34;和&#34;发布&#34;配置,你很可能会遇到一些问题和C2059错误的潜在来源。我经历了这种两难困境。