C++ error C2059: 语法错误:“常数”

环境:Win10, x64, VS2017, NX

记录日期:2020/09/10


错误描述:

NX二次开发时,新建了一个头文件 a.hpp,部分代码如下:

#include <uf_defs.h>
#include <uf_ui_types.h>
#include <iostream>

enum class DllExport FORM_TYPE
{
        UNIFIED = 0,
        METRIC,   //出错语句
        TRAPEZOIDAL
};

编译是成功的,然后在另外一个代码文件中 b.cpp 中使用 a.hpp,代码如下:

#include <uf.h>
#include "ToolData.hpp"
#include <memory>
#include <array>

编译报错,提示  METRIC 是常数 !!!


错误原因:

在b.cpp中, uf.h 文件在ToolData.hpp前面,打开uf.h 发现 uf.h 已经有    #define METRIC            1

但由于a.hpp 中 没有uf.h, 所以定义METRIC不会冲突,a.hpp 文件单独编译肯定是正确的,

但当其他文件使用 a.hpp 时,如果 uf.h 在 a.hpp 前面,编译就会报错。


解决办法:

1. 养成一个好的习惯,将系统文件放在最前面,这样重复的变量在编译前就会暴露出来,

然后使用 undef METRIC 解决冲突,毕竟这种错误很难定位,尽量规范。

2.  自己编写代码定义变量时,尽量避免系统关键字 ,如MessageBox, 使用不会重复的名字,

这种方法比较笨,不建议使用。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值