Strange syntax error problem with mmorpg-framework

Alexander Christian alex@root1.de
Mon Mar 17 16:05:00 GMT 2008


John Love-Jensen wrote:
> Hi Alex,
>
> The problem is probably in the expansion of the macros.
>
> From the macros visible in the trunk/src/game/Player.cpp [5122:5445] diff,
> it is not apparent what the problem is, since not all macros involved are
> available in that diff.
>   
The player.cpp source is directly available via 
http://www.mangosproject.org/trac/browser/trunk/src/game/Player.cpp?rev=5126&format=raw 
,  if you find time to have a look at it ...
> It appears that someone tried to make accessing the "value index" more
> regular, by introducing a PLAYER_SKILL_VALUE_INDEX macro function.  Perhaps
> a glitch was introduced as well.
>   

I opened player.cpp and search for "PLAYER_SKILL_VALUE_INDEX". I found 
the following at the beginning (nearly) of the file:

----code----
#define PLAYER_SKILL_VALUE_INDEX(x) (PLAYER_SKILL_INDEX(x)+1)
----/code----

Looks like the macro you mentioned?!

The "funny" thing is: This error's doesn't appear on all user's 
machines. There are many users out there who don't have this problems. 
So the errors aren't a real blocker. And that's why I'm so confused. The 
devs say, that gcc 4.x.y should work fine and don't have this problems. 
Is it possible that a library that gcc uses is not up2date for using 
those macros?
> In general, for C++, I strongly recommend avoiding macro functions and macro
> constants.  Instead, use the C++ facilities of inline functions and const
> identifiers.
>
> There are a few exceptions to my C++ rule-of-thumb, such as assert macro
> functions.  But the exceptions to the rule are very few.
>
> My advice is probably too late for the developers to adopt.  Alas.
>   
I will post this to the devs... Maybe it's not "too late" ;-)

> You may be able to identify the problem if you compile that .cpp file with
> the g++ -E switch, and look at the post-preprocessed output.
>
> Sincerely,
> --Eljay
>
>   

I will have to look at the created makefile to enable this switch ...

so far, thanks for your help.

br,
Alex



More information about the Gcc-help mailing list