Walt Mankowski on 26 Apr 2004 21:16:02 -0000 |
On Mon, Apr 26, 2004 at 05:07:31PM -0400, Michael C. Toren wrote: > On Mon, Apr 26, 2004 at 04:43:31PM -0400, Walt Mankowski wrote: > > I have a C app that was developed on a 32 bit Linux box, and I'm > > trying to get it to compile cleanly on a 64 bit opteron. Does anyone > > know of a gcc preprocessor directive that will tell whether a source > > file is being compiled for 32 or 64 bits? > > [..] > > > But I'm pretty sure that "__32_BITS__" isn't the right directive. > > Does anyone know what the recommended way to do this is? > > Looking through /usr/include on a Debian system, it appears that if you > include <bits/wordsize.h> you'll have access to __WORDSIZE. I've never > had a need to use it, though, and I have no idea how portable it is. Yeah, I'm thinking I'm just going to go with __WORDSIZE. In fact, if I hadn't misspelled it as "__WORDSIZE__" I probably wouldn't have even sent the original message. :) I don't know how portable it is, either, but fortunately it doesn't occur in all that many places. I'd rather code around them than litter my code with #if's. For the ones I can't eliminate, there is what I'll likely change them to: #include <stdio.h> int main () { long i = 42; #if __WORDSIZE == 64 printf("i = %ld\n", i); #else printf("i = %d\n", i); #endif return 0; } Thanks for your help. Walt Attachment:
signature.asc
|
|