title: C++ preprocessor unexpected compilation errors
body: <p>Please look at the following file: (it is a complete file)</p>
  
  <pre><code>#ifndef TEES_ALGORITHM_LIBRARY_WRAPPER_H
  #define TEES_ALGORITHM_LIBRARY_WRAPPER_H
  
  #ifdef _TEES_COMPILE_AS_LIB
  #include &lt;dfa\Includes\DFC_algorithms.hpp&gt;
  #include &lt;DFA\FuzzyClassifier\FuzzyAlgorithmIntialization\InitFuzzyAlgorithm.hpp&gt;
  typedef teesalgorithm::tees_fuzzy_algorithms algorithms_switchyard_class;
  #else
  #include &lt;DFA\Includes\commercial_algorithms.hpp&gt;
  //An incomplete class to hide implementation
  class algorithms_switchyard_class;
  #endif
  
  class AlgorithmLibraryWrapper {
  algorithms_switchyard_class * algorithmPtr_;
  
  typedef teesalgorithm::tees_paramObj paramObj_type;
  typedef teesalgorithm::tees_errorObj errorObj_type;  
  typedef teesalgorithm::tees_statusObj statusObj_type;
  typedef teesalgorithm::tees_dataObj dataObj_type;
  typedef teesalgorithm::tees_outputObj outputObj_type;
  
  public:
  
  AlgorithmLibraryWrapper(const std::string&amp; sAlgName, paramObj_type&amp; paramObj,     errorObj_type&amp; errObj, statusObj_type&amp; statusObj, const char* sFilePath);
  static bool dataReader(const std::string&amp; sFileName, dataObj_type&amp; dataObj,     errorObj_type&amp; errObj, statusObj_type&amp; statusObj);
  bool runalgorithm(const dataObj_type&amp; dataObj, outputObj_type&amp; outObj, errorObj_type&amp; errObj, statusObj_type&amp; statusObj); 
  ~AlgorithmLibraryWrapper();
  
  };
  
  
  #ifdef _TEES_USE_COMPILED_ALGORITHM_LIB
  #   ifdef _MSC_VER
      #if _MSC_VER &lt; 1400  // If VC 2003
          #ifdef _DEBUG
              #error No AlgorithmLibWrapper libraries compiled for this version of VC
          #else
              #error No AlgorithmLibWrapper libraries compiled for this version of VC
          #endif
      #elif defined(UNDER_CE)  // Win CE
          #ifdef _DEBUG
              #pragma comment( lib, "AlgorithmLibWrapperCEd" )
          #else
              #pragma comment( lib, "AlgorithmLibWrapperCE" )
          #endif
      #else  // If VC 2005
          #ifdef _DEBUG
              #pragma comment( lib, "AlgorithmLibWrapperd" )
          #else
              #pragma comment( lib, "AlgorithmLibWrapper" )
          #endif
      #endif
  #endif 
  #endif
  
  
  #endif //TEES_ALGORITHM_LIBRARY_WRAPPER_H
  </code></pre>
  
  <p>I am getting the following errors; I don't know why. I manually counted the preprocessor directives also.</p>
  
  <blockquote>
    <p>AlgorithmLibraryWrapper.hpp:10:1: unterminated #ifdef<br>
        AlgorithmLibraryWrapper.hpp:7:1: unterminated #ifndef</p>
  </blockquote>
  
  <p>I am using the poor vxWorks gcc compiler. Please let me know if the fault is mine or the compiler's.</p>