【Bug/Cplex】不明原因报错集合

在VS C++工程中引入CPLEX库后遇到编译错误,错误源于宏定义冲突。例如,`#define E 0.01`与CPLEX头文件中的某个标识符'E'产生冲突,导致`iloiterator.h`和`iloexpression.h`等文件中的编译错误。解决方法是避免或修改引起冲突的宏定义。

vs c++工程添加cplex库后,编译出现很多错误的时候,不一定是代码有问题,可能是:

【宏定义冲突】

EXAMPLE_1 往项目中添加#include<ilcplex/ilocplex.h>直接报如下错

1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(41): error C2332: “class”: 缺少标记名
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(41): error C2993: “”: 非类型模板参数“<unnamed-tag>”的类型非法
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(41): error C2059: 语法错误:“常量”
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(43): error C2059: 语法错误:“public”
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(43): error C2143: 语法错误: 缺少“;”(在“{”的前面)
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(43): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2246: “IloNumExprI::_rttiIndex”: 本地定义的类中的非法静态数据成员
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getTypeInfo”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getBaseTypeInfo”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “isType”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getTypeIndex”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getBaseTypeIndex”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getRttiTypeName”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “extractToCP”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “unextractFromCP”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “modifyCP”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2246: “IloNumExprI::_extractCP”: 本地定义的类中的非法静态数据成员
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2246: “IloNumExprI::_unextractCP”: 本地定义的类中的非法静态数据成员
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2246: “IloNumExprI::_modifyCP”: 本地定义的类中的非法静态数据成员
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(91): error C2270: “getExprUsed”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(101): error C2270: “isInteger”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(103): error C2270: “eval”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(105): error C2270: “getNumConstant”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(107): error C2270: “isRefCountedExpr”: 非成员函数上不允许修饰符
一个个文件检查后发现是一个宏定义导致的:#define E 0.01

应该是iloexpression.h中涉及了E

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值