Skip to main content
gamedev.net
🔒 Locked

Cannot find identifier

Started by Bimble Bob Oct 7, 2006 at 9:52 AM 4 replies 700+ views
Original Post
Bimble Bob
Bimble Bob
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!
Evil Steve
Evil Steve
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__

Bimble Bob
Bimble Bob
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!
Bimble Bob
Bimble Bob
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!
Simian Man
Simian Man
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.
Bimble Bob
Bimble Bob
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!

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.