bug-vcdimager
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[VCDImager Bugs/Devel] Re: macos port


From: Herbert Valerio Riedel
Subject: [VCDImager Bugs/Devel] Re: macos port
Date: 04 Mar 2003 15:14:58 +0100

just fyi, address@hidden is meant for developers... :-)

On Mon, 2003-03-03 at 14:28, Rolando Abarca (aka funkaster) wrote:
> Hi,

> I compiled the code in the cvs repository and it's working. I only had a
> problem with some structures that needed to be packed.
> In vcd_types.h you define this:

> #if !defined(__GNUC__) && !defined(macintosh)
> /* should work with most EDG-frontend based compilers */
> # define PRAGMA_BEGIN_PACKED _Pragma("pack(1)")
> # define PRAGMA_END_PACKED   _Pragma("pack()")
> #else
> /* for GCC we try to use GNUC_PACKED instead */
> # define PRAGMA_BEGIN_PACKED
> # define PRAGMA_END_PACKED
> #endif

> the problem here (at least for MacOS) is that I can't include preprocessor
> directives in a preprocessor directive, although #pragma is not really a
> preprocessor directive.

that's what ISO C99's _Pragma() is for btw... otherwise I would have
used '#pragma' directly above...

> So a simple solution was to add -align packed to
> the C compiler options. This packs every structure. I don't know the side
> effects of this. 

most likely some structures defined in the standard system headers will
get compacted as well... the question remains, whether this changes
anything relevant on the ABI level... 

> Another solution could be to add #ifdef macintosh/#endif
> between every struct that needs to be packed and there add the #pragma.

...extremely ugly :-/ of course you can do that, but I won't add
something like that to CVS so soon...

> One last thing: I don't know how you feel about this macos port, I mean if
> you want it to be "official" or just unsopported. I can send you the files
> that needed some changes to make them work with macos...

if the changes are minimal, I'll most likely merge them, but stuff like
adding #ifdef macintosh around various places is not going to be
merged... ;-)

> #include <stdio.h> /*  square root by Newton's zero-finder method   */
> #include <float.h> /*  by Rolando Abarca  rabarca at ing.uchile.cl  */
> int main(int c, char* v[]){if (c==2){long d=atol(v[1]);double r1,r2=0;
> double E=DBL_MIN;for(r1=(1+d)/2;((r1-r2>0)?r1-r2:r2-r1)>E;){r2=r1;r1=(
> r2+d/r2)/2;}printf("%.15f\n",r1);}else printf(" usage: fsqrt <n>\n");}
-- 
Herbert Valerio Riedel       /    Phone: (EUROPE) +43-1-58801-18840
Email: address@hidden       /    Finger address@hidden for GnuPG Public Key
GnuPG Key Fingerprint: 7BB9 2D6C D485 CE64 4748  5F65 4981 E064 883F 4142





reply via email to

[Prev in Thread] Current Thread [Next in Thread]