On Fri, 27 Jul 2001, Mike Breuer wrote:
>The number one thing I found annoying when I first started working with
>the code is the use of macros for function prototyping: SPECIAL, ACMD,
>ASPELL, etc. I had to dig all around the code to figure out whether the
>variables being used were global or passed as parameters. It made
>writing that first spec proc a little more grueling than it needed to be.
It's rather nice to be able to search for such functions but it does
obscure the variables. Four of the 'arg -> argument' bugs uncovered by the
global variable removal are due to such macros. We could do:
SPECIAL(shopkeeper, ch, me, cmd, argument)
so that the arguments can be named whatever you want, but then you forget
the types. What might be better is:
SPECIAL(void shopkeeper(struct char_data *ch, void *me, int cmd,
char *argument)
where SPECIAL is:
#define SPECIAL(x) x
That removes the benefit of easily changing the variables for your special
procedures though. All of them must have the same arguments anyway.
>Another (minor) thing I noticed recently, is just a silly thing in mag_affects
>(magic.c). The to_vict message and to_room message are sent to act like this:
>
>act(to_vict, FALSE, victim, 0, ch, TO_CHAR);
>act(to_room, TRUE, victim, 0, ch, TO_ROOM);
>
>instead of:
>
>act(to_vict, FALSE, ch, 0, victim, TO_VICT);
>act(to_room, TRUE, ch, 0, victim, TO_NOTVICT);
A little funny. I'll take a look and see how it compares to the others.
--
George Greer
greerga@circlemud.org
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/06/01 PST