为旧gcc编译程序

时间:2013-11-26 18:23:20

标签: c++ gcc

我必须编译程序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?

1 个答案:

答案 0 :(得分:0)

gcc 尝试specifying the language standard。我建议你试试

-std=g++11

首先,我认为最有可能编译它。如果它不起作用,请尝试其他选择。

如何添加这取决于编译是如何完成的,但是一种“快速和简单”的方法是添加这个是查找makefile,找到一行指定编译器标志变量CXXFLAGS并将其添加到它。注意:如果它是生成的makefile,如果再次运行生成器,编辑将被覆盖。