使用CPLEX 12.8时出现GCC / G ++警告

时间:2018-03-26 10:37:14

标签: c++ gcc g++ clang++ cplex

我使用CPLEX 12.8和c ++编写一个benders分解算法。当我使用clang ++编译器时,没有错误。但是,当我使用g ++时,会发生以下错误:

  

包含来自的文件   /opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/ilocplexi.h:1053:0,                    来自/opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/ilocplex.h:29,
  从PARAM.h:12,                    来自MAIN.cpp:1:/opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/iloparam.h:83:12:   警告:不推荐使用'IloCplex :: Param :: MIP :: Limits :: SubMIPNodeLim'   [-Wdeprecated-声明]        struct Limits {^ /opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/iloparam.h:103:40:   注意:在此声明          static const IloCplex :: LongParam SubMIPNodeLim = LongParam(CPX_PARAM_SUBM

我的代码中没有使用SubMIPNodeLim,因此我不明白为什么会收到此警告。虽然g ++会产生这种警告,但它也会编译代码,我可以看到结果。但是,当我使用gcc时,它不显示任何结果,并以一长串错误终止。你能告诉我这里有什么问题吗?

1 个答案:

答案 0 :(得分:2)

参数警告仅用于提供信息;有问题的参数在ilcplex/iloparam.h头文件中定义(通过ilcplex/ilocplex.h间接包含),因此即使您没有直接使用它也会看到警告。您可以在12.8发行说明here中阅读有关已弃用参数的详细信息。如果需要,可以使用-Wno-deprecated编译器选项使警告静音(即,请参阅文档here)。

可以使用gcc编译C ++代码,但您可能会收到链接器错误(例如,请参阅this stackoverflow线程)。但是,使用g++可以让您的生活更轻松。