我必须编译程序probcons但是有很多错误。在自述文件中,autor write程序与gcc 4.3兼容,但我只有4.7.2。有没有办法编译这个旧程序?我不相信程序中存在错误,因为许多生物信息学服务器正在使用它。
对我来说最奇怪的是这个错误:
Description Resource Path Location Type
expected ‘)’ before ‘size’ SafeVector.h /probcons line 27 C/C++ Problem
expected ‘)’ before ‘size’ SafeVector.h /probcons line 26 C/C++ Problem
在SafeVector.h课程中:
/////////////////////////////////////////////////////////////////
// SafeVector.h
//
// STL vector with array bounds checking. To enable bounds
// checking, #define ENABLE_CHECKS.
/////////////////////////////////////////////////////////////////
#ifndef SAFEVECTOR_H
#define SAFEVECTOR_H
#include <cassert>
#include <vector>
/////////////////////////////////////////////////////////////////
// SafeVector
//
// Class derived from the STL std::vector for bounds checking.
/////////////////////////////////////////////////////////////////
template<class TYPE>
class SafeVector : public std::vector<TYPE>{
public:
// miscellaneous constructors
SafeVector() : std::vector<TYPE>() {}
/*ERROR HERE*/ SafeVector(size_t size) : std::vector<TYPE>(size) {}
/*ERROR HERE*/ SafeVector(size_t size, const TYPE &value) : std::vector<TYPE>(size, value) {}
SafeVector(const SafeVector &source) : std::vector<TYPE>(source) {}
#ifdef ENABLE_CHECKS
// [] array bounds checking
TYPE &operator[](int index){
assert (index >= 0 && index < (int) size());
return std::vector<TYPE>::operator[] ((size_t) index);
}
// [] const array bounds checking
const TYPE &operator[] (int index) const {
assert (index >= 0 && index < (int) size());
return std::vector<TYPE>::operator[] ((size_t) index) ;
}
#endif
};
在旧版本的gcc中,如何不需要包括和std :: prefix?
答案 0 :(得分:0)
为 gcc 尝试specifying the language standard。我建议你试试
-std=g++11
首先,我认为最有可能编译它。如果它不起作用,请尝试其他选择。
如何添加这取决于编译是如何完成的,但是一种“快速和简单”的方法是添加这个是查找makefile,找到一行指定编译器标志变量CXXFLAGS
并将其添加到它。注意:如果它是生成的makefile,如果再次运行生成器,编辑将被覆盖。