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

Re: where is #define __linux__

On Mon, Jan 08, 2001 at 11:05:54PM -0800, Aaron Brashears wrote:
> I'm doing some code which is intended to work on linux and sunos. I
> was poking through the header files in /usr/include on my debian box
> and found a line in g++-3/stl_config.h which specified:
> #if defined(__linux__) 
> after a quick test, I found out this is true on linux, and not true on
> solaris when using gcc. However, grep -r '__linux__' * doesn't reveal
> the location where it is in fact #defined.

This is defined in the gcc specs file, see

> Anyone have a clue what's going on? While on the topic, is there a
> magic preprocessor definition that lets me know if I'm on
> sunos/solaris?

Just as a side note, think twice (or even thrice) before using that symbols.
Is the code really linux specific? For example, a Linux kernel feature
certainly is, but many other things aren't. Often it is more appropriate
to check for specific POSIX features, or the existance of the GNU C library,
or something else entirely. autoconf can help here, as well as "liberty"
(libiberty :) Of course, this depends on the thing you want to implement,
but choosing the right check makes the software more portable.

To see a full list of compiler defined symbols, use
gcc -dM -E - < /dev/null


Reply to: