Compiler errors

Started by
9 comments, last by programci_84 15 years, 1 month ago
Ok I am making a Physics simulator for fun. I started with Direct3D9 and then I moved to OpenGL. Now I'm back using Direct3D9 but this time I am constantly getting the same errors over and over again in VC++ 2008. Looking forward to your help. THE WINMAIN HEADER FILE

#ifndef WINMAIN_HPP
#define WINMAIN_HPP

//System includes
#include <windows.h>
#include <windowsx.h>
#include <math.h>

// DirectX Header Files
#include <d3d9.h>
#include <d3dx9.h>

// Useful macros
#define ERROR_MSG(msg){MessageBox(NULL,msg,L"Error",MB_OK|MB_ICONEXCLAMATION);}	//error macro debugging

//My includes
#include "Direct3D.hpp"
#include "Performance.hpp"      //Not reliant on local headers
#include "Physics.hpp"
#include "Camera.hpp"		//Not reliant on local headers
#include "Clock.hpp"		//Not reliant on local headers



extern cPhysics *myPhysics;
extern cClock *myPerformanceClock;
extern cClock *myClock;
extern cPerformance *myPerformance;
extern cD3D *myD3D;

////////////////////////////////////////////////////////////////////
#define WINDOW_WIDTH  800
#define WINDOW_HEIGHT 600

////////////////////////////////////////////////////////////////////
//GLOBAL FUNCTIONS

//handle any messages from windows
LRESULT CALLBACK wndProc(HWND hWnd,		
						 UINT uMsg, 
						 WPARAM wParam, 
						 LPARAM lParam);

//main entry point
int WINAPI WinMain(HINSTANCE hInstance, 
				   HINSTANCE hPrevInstance, 
				   LPSTR lpCmdLine, 
				   int nShowCmd);

void cleanUp();		//any cleanup code such as IDirect3D9::Release() goes here



////////////////////////////////////////////////////////////////////
#endif //WINMAIN_HPP
THE DARN ERRORS

1>------ Build started: Project: RealitySim, Configuration: Debug Win32 ------
1>Compiling...
1>Direct3D.cpp
1>f:\projects\realitysim\solution\winmain.hpp(29) : error C2143: syntax error : missing ';' before '*'
1>f:\projects\realitysim\solution\winmain.hpp(29) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>f:\projects\realitysim\solution\winmain.hpp(29) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>f:\projects\realitysim\solution\direct3d.cpp(23) : warning C4244: 'argument' : conversion from '__int64' to 'UINT', possible loss of data
1>f:\projects\realitysim\solution\direct3d.cpp(38) : warning C4244: 'initializing' : conversion from '__int64' to 'unsigned int', possible loss of data
1>f:\projects\realitysim\solution\direct3d.cpp(60) : warning C4244: 'argument' : conversion from '__int64' to 'UINT', possible loss of data
1>f:\projects\realitysim\solution\direct3d.cpp(69) : warning C4244: 'argument' : conversion from '__int64' to 'size_t', possible loss of data
1>f:\projects\realitysim\solution\direct3d.cpp(125) : warning C4244: 'argument' : conversion from '__int64' to 'UINT', possible loss of data
1>Physics.cpp
1>f:\projects\realitysim\solution\winmain.hpp(25) : error C2143: syntax error : missing ';' before '*'
1>f:\projects\realitysim\solution\winmain.hpp(25) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>f:\projects\realitysim\solution\winmain.hpp(25) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>WinMain.cpp
1>f:\projects\realitysim\solution\winmain.cpp(184) : warning C4244: 'argument' : conversion from 'float' to 'DWORD', possible loss of data
1>Generating Code...
1>Build log was saved at "file://f:\Projects\RealitySim\Solution\Debug\BuildLog.htm"
1>RealitySim - 6 error(s), 6 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Advertisement
Hi,

Quote:error C2143: syntax error : missing ';' before '*'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int


I think you must look at your class definitions. You know, in a class definition, you must end it with a ; symbol:

class CMyClass{  //...some members}


This definition is wrong, because I "forgot" a ; symbol after }. The true definiton:

class CMyClass{  //...some members};


I think you must check something like this.

Regards.
There's no "hard", and "the impossible" takes just a little time.
Hello programci_84, Thanks for your reply.

I checked over that many time but I still get the same error.

Any more suggestions?
Maybe I should state what exactly I am trying to achieve.

All I want to do is make a few "new" instances global. The instances are created in WinMain();
Hi,

The error log says that something wrong in line 25 and line 29.

Line 25:
extern cPhysics *myPhysics;


Line 29:
extern cD3D *myD3D;


You should check cD3D and cPhysics definitions. Because error log also says: "missing type specifier - int assumed. Note: C++ does not support default-int". This means, something wrong with your type/class/struct/enum definiton(s) and compiler couldn't find a data-type like it. It may be caused by a forgotten semi-colon.

If still not, maybe you can post your project files here ;)

Hope this helps.

Regards.
There's no "hard", and "the impossible" takes just a little time.
Hi again,

No the classes are fine. They work in the OpenGL version.

Ok so lets put those errors aside for now. It's probably some silly Visual studio problem.

Let's focus on what I am trying to do. I need to make the following "new" instances Global to all other source files.
//////////////////////////////////////////////////////////////////////MAINint WINAPI WinMain(HINSTANCE hInstance, 				   HINSTANCE hPrevInstance, 				   LPSTR lpCmdLine, 				   int nShowCmd){/////////////////////////////////////////////////////////////////////create new class instances on heap RUN-ONCE!cClock			*myClock = new cClock();cD3D			*myD3D = new cD3D();cPhysics		*myPhysics = new cPhysics();cPerformance	*myPerformance = new cPerformance();cClock			*myPerformanceClock = new cClock();....



How can it be done?
Ok, I can see the problem now :)

I see you included some custom .hpp files: Direct3D.hpp, Clock.hpp etc. Look at your custom .hpp files. At least 2 of these are including each other.

Like this:
In my CKamera.h file,
#include "CModel.h"


and also in my CModel.h file,
#include "CKamera.h"


You can see that CKamera and CModel are including each other. Look at your project files something like this.

And what about the solution of that "silly" problem? I'll try to explain over the example above.

Instead of these #include lines in your .hpp files, you must put pre-definitons. And remove these #include lines to .cpp files. Like this:

//in my CKamera.h
class CModel;class CKamera{ //... members};


//in my CKamera.cpp
#include "CModel.h"#include "CKamera.h"CKamera::CKamera(){ //...}//...


//in my CModel.h
class CKamera;class CModel{ //... members};


//in my CModel.cpp
#include CModel.h#include CKamera.hCModel::CModel(){//...}//...


Hope this helps.

Regards.
Rohat.
There's no "hard", and "the impossible" takes just a little time.
Sorry, I forgot to say an important thing:

If at least 2 of your .hpp files are including each other and also if you're using one of 'em in the other class, these errors will occur. Like this:

in CModel.h
#include CKamera.hclass CModel{  //...  CKamera* kamera;  //...};


Regards.
There's no "hard", and "the impossible" takes just a little time.
YES! I followed your rules and after about an hour of editing I got it to compile. I thought it was a VC++ problem. Thanks!
Hey! I just looked at your profile and I see you are an electronics engineer. I am a second year student in electronics engineering. I'm interested. If you want, can you tell me what career pathways were opened to you when you became an electronics engineer. I'm mainly interested in the computer/digital part of electronics engineering. The reason why I am asking is because I think it is relevant for me to know these things for my future career.

Thanks again!

BTW I gave you a full marks on your user rating.

This topic is closed to new replies.

Advertisement