Cannot find identifier

Started by
4 comments, last by Bimble Bob 17 years, 6 months ago
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.
It's not a bug... it's a feature!
Advertisement
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__

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's not a bug... it's a feature!
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.
It's not a bug... it's a feature!
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.
Will do. And I'm very pleased with myself. I can now create a window on any OS in only 3 lines of code. May not sound like much but I'm pleased!
It's not a bug... it's a feature!

This topic is closed to new replies.

Advertisement