From: lonniem AT cs DOT utexas DOT edu (Lonnie McCullough) Newsgroups: comp.os.msdos.djgpp Subject: Re: Can't print address using cout Date: Fri, 23 May 1997 05:49:01 GMT Message-ID: <33852bf6.2512633@news.nol.net> References: <337F611D DOT 4FCE AT netvision DOT net DOT il> <3380C376 DOT 6F173422 AT alcyone DOT com> <864340913 DOT 7033 AT dejanews DOT com> NNTP-Posting-Host: ip38-36.nol.net Lines: 43 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk On Thu, 22 May 1997 17:52:02 -0600, lenny AT netvision DOT net DOT il wrote: >Erik, > >Thanks for your help. The cast (void *) did the trick. > >However, isn't it strange that the djgpp compiler lacks such a basic >function that would give it the ability to print out memory addresses >(i.e. no member function ostream::operator <<(long *))? Actually no it's not djgpp. The iostream is an ANSI/ISO standard and djgpp tries to stay as close to the standard as possible (as all "gnu" products do). Any compiler supporting a ostream::operator << (long *) is strctly speaking not ANSI compatible. Besides why should it have to support all the different pointer types. Consider this: struct point { int x; int y; } ... cout << &pointvar; If you wanted to print the address of this structure you would have to overload the << operator to work with point*. This doesn't make any sense because an address is an address no matter what it is pointing to. So why not just overload the generic void* and type cast any other pointers to void*. Makes alot of sense to me. You don't want to have to overload for every pointer type you may ever encounter do you? And you can print out an address with printf (...). Do it like this: printf ("%p", &number); or any type. It is taken to be implicitly void here sorta. Lonnie McCullough lonniem AT cs DOT utexas DOT edu