Melvin Smith:
# At 01:06 AM 3/31/2002 -0500, Michael G Schwern wrote:
# >On Sun, Mar 31, 2002 at 12:49:08AM -0500, Melvin Smith wrote:
# > > I did some browsing of the code for potential problems in
# compiling
# > > for embedded platforms and/or general porting and here
# are some of the
# > > things I found.
# >
# >Do embedded C compilers often not conform to ANSI C 89?
#
# Yes and no, depending on your definition.
#
# ANSI C 89 specificies "free-standing environments" and "hosted"
# environments. It does not require the former to provide any
# more than these 4 -> (float.h, limits.h, stdarg.h, stddef.h), besides
# the language proper itself.
#
# To qualify as a "hosted" environment they must provide the larger
# list (stdio, stdlib, signal, string, assert, ctype, errno,
# locale, limits,
# math, setjmp, stdarg, stddef, time).
#
# WinCE on PocketPC is in my book a "free-standing" environment
# by this definition. I've also coded on the Intel 8051 MC once
# upon a time
# and I think I had some of the same issues, but its too fuzzy to
# remember now.
#
# CE is coming along though, 2.0 didn't provide stdio stuff,
# but 3.0 does
# have some limited stuff.

Ouch.  They actually expect you to be able to do anything useful without
the other headers?

It might actually be easier to just implement the headers ourselves on
platforms that don't have them...

# > > 1- assert.h and use of assert()
# > >     assert is easy enough to implement we need to do this
# and not depend
# > >     on its existence on the target because its not guaranteed.
# >
# >assert is part of ANSI C 89, it should always be there.  The only
# >limitation is the expression must be an int.
# >
# >
# > > 2- errno.h same thing.
# >
# >errno is also in ANSI C 89.
#
# I'm not saying we shouldn't use it or include it, just not in
# the general
# naked includes.
#
# >However, using errno to transmit error messages has bitten us in the
# >ass in Perl5.
#
# Well for one, assert is so easy to implement its really kind
# of dumb that
# the host compiler doesn't have it, but its also not worth
# fretting about,
# either.
#
# However, anywhere we use assert() is probably a candidate for using
# the Parrot exception routine anway.

Or better, the incredibly under-utilized panic routine.

--Brent Dax <[EMAIL PROTECTED]>
@roles=map {"Parrot $_"} qw(embedding regexen Configure)

#define private public
    --Spotted in a C++ program just before a #include

Reply via email to