   order of includes??
  I have a file were I include other files from my program:#include <windows.h>#include <stdlib.h>#include <gl/gl.h>#include <gl/glu.h>#include "NeHe.h"#include "text.h"#include "CMenu.h"#include "CController.h"funny thing is, is that if I keep it how it's written then I get wierd errors from the fstream file.  here's the  CController:#include <vector>#include <windows.h>#include <fstream>#include <iomanip>#include <gl\gl.h>#include "SVector2D.h"#include "defines.h"#include "CNeuralNet.h"#include "CData.h"#include "NeHe.h"#include "text.h"using namespace std;//the program can be in one of three states.enum mode{LEARNING, ACTIVE, UNREADY, TRAINING};class CController {private:  //the neural network  CNeuralNet*m_pNet;  //this class holds all the training data  CData*m_pData;    //the user mouse gesture paths - raw and smoothed  vector<POINTS> m_vecPath;  vector<POINTS> m_vecSmoothPath;  //the smoothed path transformed into vectors  vector<double> m_vecVectors;  //true if user is gesturing  bool    m_bDrawing;  //the highest output the net produces. This is the most  //likely candidate for a matched gesture.  double  m_dHighestOutput;  //the best match for a gesture based on m_dHighestOutput  intm_iBestMatch;  //if the network has found a pattern this is the match  intm_iMatch;  //the raw mouse data is smoothed to this number of points  intm_iNumSmoothPoints;  //the number of patterns in the database;  intm_iNumValidPatterns;  //the current state of the program  mode    m_Mode;  //local copy of the application handle  //HWND    m_hwnd;  //clears the mouse data vectors  void    Clear();    //given a series of points whis method creates a path of   //normalized vectors  void    CreateVectors();  //preprocesses the mouse data into a fixed number of points  bool    Smooth();  //tests for a match with a prelearnt gesture  bool    TestForMatch();    //dialog box procedure. A dialog box is spawned when the user  //enters a new gesture.  //static BOOL CALLBACK DialogProc(HWND   hwnd,  //  UINT   msg,  //  WPARAM wParam,  //  LPARAM lParam);  //this temporarily holds any newly created pattern names  //static string m_sPatternName;public:  CController();    ~CController();  //call this to train the network using backprop with the current data  //set  bool TrainNetwork();  //renders the mouse gestures and relevant data such as the number  //of training epochs and training error  void Render();  //returns whether or not the mouse is currently drawing  bool Drawing()const{return m_bDrawing;}  //this is called whenever the user depresses or releases the right  //mouse button.  //If val is true then the right mouse button has been depressed so all  //mouse data is cleared ready for the next gesture. If val is false a  //gesture has just been completed. The gesture is then either added to  //the current data set or it is tested to see if it matches an existing  //pattern.  //The hInstance is required so a dialog box can be created as a child  //window of the main app instance. The dialog box is used to grab the  //name of any user defined gesture  bool Drawing(bool val);  void LearningMode();  //call this to add a point to the mouse path  void AddPoint(POINTS p)  {    m_vecPath.push_back(p);  } void SaveNet();  void Load();};#endifhere're save and load:void CController::SaveNet(){   int count=0;   vector<SNeuronLayer> netdata = m_pNet->GetNeurons();   ofstream fout("brain.txt");   for(int l=0; l<netdata.size(); l++)    {for(int n=0; n<netdata[l].m_vecNeurons.size(); n++) {  for(int w=0; w<netdata[l].m_vecNeurons[n].m_vecWeight.size(); w++)   {    fout<<netdata[l].m_vecNeurons[n].m_vecWeight[w]<<" ";    count++;   } }    }    fout<<endl<<endl;    fout<<netdata.size()<<endl;    fout<<netdata[0].m_vecNeurons.size()<<endl;    fout<<netdata[0].m_vecNeurons[0].m_vecWeight.size()<<endl;    fout<<count;    fout.close();}void CController::Load(){ m_Mode = TRAINING; m_pNet->LoadNet(); m_Mode = ACTIVE;}and I get these errors:18 C:\Dev-Cpp\Examples\height2\NeHe.cpp   from NeHe.cpp  C:\Dev-Cpp\include\c++\3.4.2\bits\fstream.tcc In member function `virtual typename std::basic_filebuf<_CharT, _Traits>::int_type std::basic_filebuf<_CharT, _Traits>::underflow()': 277 C:\Dev-Cpp\include\c++\3.4.2\bits\fstream.tcc expected unqualified-id before '(' token ?????  What is that??But if I include the controller after the CMenu:#ifndef  CMENU_H#define  CMENU_H#include <iostream>#include <stdlib.h>#include <windows.h>// Header File For Windows#include <stdio.h>// Header File For Standard Input/Output#include <gl\gl.h>// Header File For The OpenGL32 Library#include <gl\glu.h>// Header File For The GLu32 Library#include <string.h>#include <stdarg.h>#include <vector>#include "Vector2D.h"#include "NeHe.h"#include "text.h"#include "ortho.h"using namespace std;enum   GameState{MainMenu, Playing};struct SButton{ SButton(  float h, float w, Vector2D pos, GLint t); Vector2D  m_vPosition; GLinttex_id; floathight, width; bool IsPressed(); void Render();}; class  CMenu{  private:   //Holds the different states the game can be inGameState m_GameStates;    vector<SButton> m_vButtons; public:    //ctor    CMenu();   //updates the game menu    void Update();    //renders the menu    void Render();   //sees if something was pressed    void ProcessMouse();    //---------------accessor methods   GameState GetState(){return m_GameStates;}}; extern CMenu Menu;#endifthen I get this error:26 C:\Dev-Cpp\Examples\height2\CMenu.h `Vector2D' has not been declared When I run the controller in a seperate program I get no errors.What is going on here.  I had two programs that worked perfectly but when I combine them I get errors?Thanks.   
  you have a random #endif on the bottom of your controller file. Did you just mis-paste it (skipping the first two lines), or is that possibly your actual error? :).   ;Quote:277 C:\Dev-Cpp\include\c++\3.4.2\bits\fstream.tcc expected unqualified-id before '(' token You'll probably find that there is a name clash of some kind with the name used just before the '('. Probably a macro with the same name but a different meaning.   ;  -yes I mispasted.-What do you mean with the macro?anything else?Thanks.   ;  On my machine (with the latest dev-c++, and the same include path), that line is: __ilen = std::min(__avail, __buflen);Maybe you defined your own 'min' somewhere, and it's clashing...   ;  windows.h defines macros for min and max. I think there is a way to disable it, but I can't remember it.My own include policy is to always include the standard library first.   ;Quote:Original post by rip-offwindows.h defines macros for min and max. I think there is a way to disable it, but I can't remember it.#define NOMINMAX before including windows.h.