C Interview Questions and Answers


How can I use a preprocessorif expression to ?

How can I use a preprocessor #if expression to tell whether a machine's byte
order is big-endian or little-endian?

You probably can't. The usual techniques for detecting endianness involve pointers
or arrays of char, or maybe unions, but preprocessor arithmetic uses only long integers,
and there is no concept of addressing. Another tempting possibility is something
like #if 'ABCD' == 0x41424344 but this isn't reliable, either. At
any rate, the integer formats used in preprocessor #if expressions are not necessarily
the same as those that will be used at run time. Are you sure you need to know the
machine's endianness explicitly? Usually it's better to write code which
doesn't care

Posted by:Richards