368c368 < respectively, the date and time of translation are not available (6.10.8).} --- > the date and time of translation, respectively, are not available (6.10.8).} 413,414c413,414 < (The @option{-pedantic} option directs GCC to print a warning message if < any of these features is used.) To test for the availability of these --- > The @option{-pedantic} option directs GCC to print a warning message if > any of these features is used. To test for the availability of these 422,423c422,423 < Some features that are in ISO C99 but not C89 or C++ are also, as < extensions, accepted by GCC in C89 mode and in C++. --- > Some features that are in ISO C99 but not C89 or C++ are also > accepted as extensions by GCC in C89 mode and in C++. 496c496 < example: --- > example, 506c506 < is a valid (though slightly more complex than necessary) expression --- > is a valid (though needlessly complex) expression 512c512 < last within the braces, the construct has type @code{void}, and thus --- > last within the braces, the construct has type @code{void} and thus 535a536,538 > If you don't know the type of the operand, you can still do this, but you > must use @code{typeof} (@pxref{Typeof}). > 540,542d542 < If you don't know the type of the operand, you can still do this, but you < must use @code{typeof} (@pxref{Typeof}). < 544c544 < there is unclear. (It is possible that they will become fully supported --- > there is unclear. It is possible that they will become fully supported 546c546 < are present will continue to exist indefinitely.) Presently, statement --- > are present will continue to exist indefinitely. Presently, statement 552c552 < handled. For example: --- > handled. For example, 559c559 < does not work the same way as: --- > does not work the same way as 603,604c603,605 < The label declaration defines the label @emph{name}, but does not define < the label itself. You must do this in the usual way, with --- > The label declaration indicates that the identifier @emph{name} > will be used as a label, but it does not actually define > the label. You must do this in the usual way, with 651c652 < To use these values, you need to be able to jump to one. This is done --- > To use these values, you need to be able to jump to them. This is done 690,691c691,693 < You may not use this mechanism to jump to code in a different function. < If you do that, totally unpredictable things will happen. The best way to --- > You cannot use this mechanism to jump to code in a different function. > If you try to do that, totally unpredictable things will happen. > The best way to 693c695 < never pass it as an argument. --- > never to pass it as an argument. 705c707 < the number of dynamic relocations that are needed, and by consequence, --- > the number of dynamic relocations that are needed, and, by consequence, 715c717 < (Nested functions are not supported for GNU C++.) The nested function's --- > Nested functions are not supported for GNU C++. The nested function's 765a768 > @noindent 771d773 < 773,774c775,778 < containing function has exited, all hell will break loose. If you try < to call it after a containing scope level has exited, and if it refers --- > containing function has exited, all hell will break loose. > > If you try to call a nested function after a containing > scope level has exited, and if it refers 781c785 < called @dfn{trampolines}. A paper describing them is available as --- > called @dfn{trampolines}. A paper describing this technique is available as 845,846c849,850 < the arguments a function received, and call another function < with the same arguments, without knowing the number or types --- > the arguments a function received and call another function > with the same arguments without knowing the number or types 859c863 < The function saves the arg pointer register, structure value address, --- > The function saves the arg pointer register, the structure value address, 897c901 < The syntax of using of this keyword looks like @code{sizeof}, but the --- > The syntax for the use of this keyword looks like @code{sizeof}, but the 1168c1172 < if the machine supports fullword-to-doubleword a widening multiply --- > if the machine supports fullword-to-doubleword, a widening multiply 1188,1189c1192,1193 < supports them in C89 mode and in C++, and supports complex integer data < types which are not part of ISO C99. You can declare complex types --- > supports them in C89 mode and in C++. GCC also supports complex integer data > types, which are not part of ISO C99. You can declare complex types 1245c1249 < conforming) and in C++. In that format the --- > conforming) and in C++. In hex float format, the 1285a1290 > @noindent 1289c1294 < In ISO C99, you would use a @dfn{flexible array member}, which is --- > In ISO C99, you could use a @dfn{flexible array member}, which is 1314,1316c1319,1321 < initialized, as if they were flexible arrays. In addition to those < cases that were useful, it also allowed initializations in situations < that would corrupt later data. Non-empty initialization of zero-length --- > initialized, as if they were flexible arrays. Though in some > cases this technique was useful, in other situations these initializations > would corrupt later data. Non-empty initialization of zero-length 1322c1327 < Instead GCC allows static initialization of flexible array members. --- > Instead, GCC allows static initialization of flexible array members. 1419c1424 < name's scope ends. (If you use both variable-length arrays and --- > name's scope ends. If you use both variable-length arrays and 1421c1426 < will also deallocate anything more recently allocated with @code{alloca}.) --- > will also deallocate anything more recently allocated with @code{alloca}. 1469,1470c1474,1475 < defining the macro is similar to that of a function. Here is an < example: --- > defining the macro is similar to that of a function definition. > Here is an example: 1482,1483c1487,1488 < GCC has long supported variadic macros, and used a different syntax that < allowed you to give a name to the variable arguments just like any other --- > GCC has long supported variadic macros, and it has used a different syntax that > allows you to give a name to the variable arguments just like any other 1506c1511 < way. In the above examples, the compiler would complain, though since --- > way. In the above examples, the compiler would complain, though, since 1516a1522 > @noindent 1560,1561c1566,1567 < may be subscripted, although they may not be modified or used after < the next sequence point and the unary @samp{&} operator may not be --- > they may be subscripted, although they may not be modified or used after > the next sequence point, and the unary @samp{&} operator may not be 1669c1675 < duration by compound literals (which is not possible in ISO C99, because --- > duration by compound literals (which is not possible in ISO C99 because 1726c1732 < GCC still accepts is to write @address@hidden before the element --- > which GCC still accepts is to write @address@hidden before the element 1738,1741c1744,1746 < If the value in it has side-effects, the side-effects will happen only once, < not for each initialized field by the range initializer. < < @noindent --- > If the expression used to initialize the range has side-effects, > the side-effects will happen only once, > not once for each field initialized by the range initializer. 1822,1823c1827,1828 < subobject corresponding to the closest surrounding brace pair. For < example, with the @samp{struct point} declaration above: --- > subobject corresponding to the closest surrounding brace pair. Here is an > example, using the @samp{struct point} declaration above: 1921c1926 < C89 mode. For example, you could do: --- > C89 mode. For example, you could do this: 1964c1969 < @code{section} are supported for variables declarations --- > @code{section}, are supported for variables declarations