10. Compatibility Issues.

This software makes extensive use of the C++ Standard Library. It is therefore necessary that your compiler properly support the Standard Library, and in particular, the Standard Template Library (STL). One possible source of compiler difficulties may be in the use of streaming IO. The VecMat software uses the Standard Library header files "iostream" and "fstream". The Standard Library streaming IO headers cannot be used within the same project as the nonstandard streaming IO headers "iostream.h". If you want to combine the VecMat software with software that uses the nonstandard streaming IO, then you must either modify your code to use the Standard Library for these functions, or modify the VecMat software to use the nonstandard header files.

I have only tested this software on three platforms so far.

It seems to work ok on these platforms. The only compatibility issue I have seen so far is that the iterator class inheritance is different under VC++ than under g++. It appears that g++ conforms to the standard, but that VC++ does not. I have included a workaround for VC++, and if you get many compiler errors having to do with iterators, I would suggest trying the same workaround on your own platform. The workaround is at the beginning of the "vector.h" source file.

#ifdef _MSC_VER

namespace std {

template <class T, class pd>

struct random_access_iterator : public std::iterator<std::random_access_iterator_tag, T, pd> {};

}

#endif

For some reason Microsoft does not provide the random_access_iterator base-class, so this workaround provides it, and adds it to the standard namespace. I understand that the Intel compiler is source compatible with the Microsoft compiler, so it is likely that this workaround will be needed on that platform as well.

Back to Index