[Coco] Microware C Compiler port

Bob Devries devries.bob at gmail.com
Thu Jan 22 15:37:00 EST 2009


Bill,

>From the Microware C Compiler manual:
quote:
An optional character "l" indicates that the following "d","x", or "o" is 
the specification of a long integer argument
/quote

Also, from the manual, CHAR is 1 byte, INT is 2 bytes, UNSIGNED is 2 bytes, 
LONG is 4 bytes, FLOAT is 4 bytes and DOUBLE is 8 bytes.

--
Regards, Bob Devries, Dalby, Queensland, Australia

Isaiah 50:4 The sovereign Lord has given me
the capacity to be his spokesman,
so that I know how to help the weary.

website: http://www.home.gil.com.au/~bdevasl
my blog: http://bdevries.invigorated.org/

----- Original Message ----- 
From: "Bill Barnes" <da3m0n_slay3r at yahoo.com>
To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
Sent: Friday, January 23, 2009 12:20 AM
Subject: Re: [Coco] Microware C Compiler port


Hmmm, I thought it was this way:   printf("long int: %l",longint);
I do know that using "%d" deals with an int though, never seen it referenced 
as "%ld"

As far as length.... compiler specific. only guarantees is long is not 
smaller than an int, and int is not shorter than a short. I forget the OS-9 
C (CoCo) lengths, and don't feel like chasing down my manual.



-Later!  -WB- -- BABIC Computer Consulting.


--- On Wed, 1/21/09, William Astle <lost at l-w.ca> wrote:

> From: William Astle <lost at l-w.ca>
> Subject: Re: [Coco] Microware C Compiler port
> To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
> Date: Wednesday, January 21, 2009, 7:37 PM
> John W. Linville wrote:
> > On Thu, Jan 22, 2009 at 10:47:38AM +1000, Bob Devries
>
> Correct me if I'm wrong, but how does this theory work:
>
> Assumption: long is twice as many bits as int and
> big-endian byte order,
> both of which should be valid here.
>
> Pretend we have a "long" value of 16. That would
> get onto the stack as
> the following string of bytes: 00, 00, 00, 10.
>
> Now printf() is looking for an integer so it only grabs 16
> bits from the
> stack which gets the bytes: 00 00
>
> Magically, our "long" value turns into a 0.
>
> The theory is that the format string being used is only
> cuing printf()
> to look for an int value but a long int is on the stack.
>
> I'm not overly familiar with the microware C compiler
> and the C library
> involved but usually "%ld" is used for long ints
> rather than "%D", is it
> not?
>
> -- 
> William Astle





--
Coco mailing list
Coco at maltedmedia.com
http://five.pairlist.net/mailman/listinfo/coco 




More information about the Coco mailing list