Chapter 3. Macros
work correctly. You should not use these macros directly; instead, include the appro-
wchar.h
priate headers and use the typedefs.
__USING_SJLJ_EXCEPTIONS__
This macro is defined, with value 1, if the compiler uses the old mechanism based on
and
for exception handling.
longjmp
3.7.3. System-specific Predefined Macros
The C preprocessor normally predefines several macros that indicate what type of system and machine
is in use. They are obviously different on each target supported by GCC. This manual, being for all
systems and machines, cannot tell you what their names are, but you can use
all. Refer to Chapter 12 Invocation. All system-specific predefined macros expand to the constant 1,
so you can test them with either
The C standard requires that all system-specific macros be part of the reserved namespace. All names
which begin with two underscores, or an underscore and a capital letter, are reserved for the compiler
and library to use as they wish. However, historically system-specific macros have had names with no
special prefix; for instance, it is common to find
GCC provides a parallel macro with two underscores added at the beginning and the end. If
defined,
will be defined too. There will never be more than two underscores; the parallel
__unix__
of
is
_mips
__mips__
When the
option, or any
-ansi
all the system-specific predefined macros outside the reserved namespace are suppressed. The parallel
macros, inside the reserved namespace, remain defined.
We are slowly phasing out all predefined macros which are outside the reserved namespace. You
should never use them in new programs, and we encourage you to correct older code to use the
parallel macros whenever you find it. We don't recommend you use the system-specific macros that
are in the reserved namespace, either. It is better in the long run to check specifically for features you
need, using a tool such as
3.7.4. C++ Named Operators
In C++, there are eleven keywords which are simply alternate spellings of operators normally written
with punctuation. These keywords are treated as such even in the preprocessor. They function as
operators in
, and they cannot be defined as macros or poisoned. In C, you can request that those
#if
keywords take their C++ meaning by including
object-like macro expanding to the appropriate punctuator.
These are the named operators and their corresponding punctuators:
Named Operator
and
and_eq
bitand
bitor
compl
not
not_eq
or
#ifdef
#if
.
option that requests strict conformance, is given to the compiler,
-std
.
autoconf
.
defined on Unix systems. For all such macros,
unix
. That header defines each one as a normal
iso646.h
Punctuator
&&
&=
&
|
~
!
!=
25
setjmp
to see them
cpp -dM
is
unix
Need help?
Do you have a question about the ENTERPRISE LINUX 3 - USING CPP and is the answer not in the manual?
Questions and answers