Sign in to follow this  
Dom_152

Cannot find identifier

Recommended Posts

Strange problem. I have this in a header file called say Thing.h: #include "IDFRoot.h" namespace ANameSpace { extern DFRESULT createRoot(bool bLog, const float DFENGINEVERSION, LPIDFROOT *pIRoot); } Now LPIDFROOT is defined in IDFRoot.h like this: class IDFRoot { //Blah }; typedef class IDFRoot *LPIDFROOT; Now with that when i compile I get this error: Thing.h: error C2061: syntax error : identifier 'LPIDFROOT' It compiles fine if were to put the createRoot() declaration in IDFRoot.h just under the typedef but when I try to use the function in my Apps I get an Undefined external symbol. I'm not quite sure what I'm doign wrong so any help would be appreciated.

Share this post


Link to post
Share on other sites
The only time I've had problems like this is when I used the same preprocessor symbol for the include guards in two files (Damn copy & paste errors...)
Something like:

Thing.h:

#ifndef __THING_H__
#define __THING_H__

#include "IDFRoot.h"

// Code

#endif // __THING_H__



IDFRoot.h:

#ifndef __THING_H__
#define __THING_H__

// Code

#endif // __THING_H__


Share this post


Link to post
Share on other sites
OK I fixed the inclusion guards (They were missing alltogether :S) and now none of my classes work. Each class includes Thing.h which in turn includes each class header file. So in theory each class has access to the others. But this isn't happening for some reason.

Share this post


Link to post
Share on other sites
It works if I include all the files included in Thing.h directly into IDFRoot.h. It'll do as a temporary fix so I can work out why using this in my Apps gives me Access Violation errors.

Share this post


Link to post
Share on other sites
You should try to minimize includes as much as you can. It seems simpler to design it so everything can access everything else, but this causes serious headaches later.

I'd remove all of your include directives and add them back one by one until you get rid of compiler errors.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this