Skip to content

Commit bd7ef3f

Browse files
author
ripley
committed
update
git-svn-id: https://svn.r-project.org/R/trunk@88063 00db46b3-68df-0310-9c12-caf00c1e9a41
1 parent c44ecbb commit bd7ef3f

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

doc/manual/R-exts.texi

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2906,7 +2906,7 @@ The Fortran 2023 released in Nov 2023: as usual compiler vendors are
29062906
introducing support incrementally.
29072907
For Intel's @command{ifx} see
29082908
@uref{https://www.intel.com/content/www/us/en/developer/articles/technical/fortran-language-and-openmp-features-in-ifx.html#Fortran%20Standards}.
2909-
For @I{LLVM}'s @command{flang} aka @command{flang-new} see
2909+
For @I{LLVM}'s @command{flang} see
29102910
@uref{https://flang.llvm.org/docs/F202X.html}.
29112911
@code{gfortran} does not have complete support even for the 2008 and
29122912
2018 standards, but the option @option{-std=f2023} is supported from
@@ -16286,21 +16286,31 @@ C++ header @file{cfloat}, which provide constants such as
1628616286
@apivar TRUE
1628716287
@apivar FALSE
1628816288
@apihdr R_ext/Boolean.h
16289-
The included header @file{R_ext/Boolean.h} has enumeration
16290-
constants @code{TRUE} and @code{FALSE} of type @code{Rboolean} in
16291-
order to provide a way of using ``logical'' variables in C consistently.
16292-
This can conflict with other software: for example it conflicts with the
16293-
headers in @I{IJG}'s @code{jpeg-9} (but not earlier versions).
16294-
@code{Rboolean} cannot represent @code{NA} and hence cannot be used for
16295-
elements of R logical vectors.
16289+
The included header @file{R_ext/Boolean.h} has enumeration constants
16290+
@code{TRUE} and @code{FALSE} of type @code{Rboolean} in order to provide
16291+
a way of using ``logical'' variables in C consistently. This can
16292+
conflict with other software: for example it conflicts with the headers
16293+
in @I{IJG}'s @code{jpeg-9} (but not earlier versions). @code{Rboolean}
16294+
cannot represent @code{NA}@footnote{Most compilers do not check values
16295+
when assigning to an @code{enum} and store this type as an @code{int},
16296+
so this may appear to work now but it likely to fail in future.} and
16297+
hence cannot be used for elements of R logical vectors.
1629616298

1629716299
Type @code{Rboolean} is being phased out: as from @R{}@tie{}4.5.0 the
1629816300
header also makes available the type @code{bool} and values @code{true}
1629916301
and @code{false}. These are reserved words in C23 and C++11 and
16300-
available @emph{via} header @file{stdbool.h} as from C99. (@code{bool}
16301-
is not a drop-in replacement for @code{Rboolean} as it is usually stored
16302-
in a byte and @code{Raoolean} in an @code{int}, hence 4 bytes.)
16303-
16302+
available @emph{via} header @file{stdbool.h} as from C99. (Type
16303+
@code{bool} is not a drop-in replacement for @code{Rboolean} as it is
16304+
usually stored in a byte and @code{Rboolean} in an @code{int}, hence 4
16305+
bytes.)
16306+
16307+
Some package maintainers may want to exclude the provision of
16308+
@code{TRUE}, @code{FALSE}, @code{true}, @code{false} and @code{bool} to
16309+
avoid clashes with other headers such as the IJG ones mentioned above.
16310+
This cannot be done entirely (the last three are keywords in C23 and
16311+
C++11) but as from @R{}@tie{}4.5.0 defining @code{R_INCLUDE_BOOLEAN_H}
16312+
to @code{0} before including any header which includes this one (such as
16313+
@file{R.h} and @file{Rinternals.h}) skips its body.
1630416314

1630516315
@node Optimization
1630616316
@section Optimization

0 commit comments

Comments
 (0)