Cannot find identifier
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.
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:
IDFRoot.h:
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__
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.
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.
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.
I'd remove all of your include directives and add them back one by one until you get rid of compiler errors.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement