SC22/WG14 N870 Editor's Report January 28, 1999 1. Status N869 is a revised draft incorporating the changes detailed in the Santa Cruz minutes (N859, incorporating parts of N847, N851, and N852), plus a few more corrections and editorial changes. It contains diff marks for all of the changes from CD2 except for very minor formatting changes. The Foreword and Introduction are now part of the body of the document (i.e., they follow the Table of Contents, appear in it, and have page numbers). The Foreword now points to the committee's web page and mentions the Rationale and DR Log, notes that this edition of the standard replaces the previous edition, and contains a list of major changes from the previous edition. At the moment, the list is essentially the list of changes from the committee's web page; opinions as to which of these changes are worth mentioning and which aren't will be gratefully accepted, as will any notes about changes that have been overlooked. Uses of the term ``printable character'' have been replaced by the more widely used ``printing character''. Likewise, ``upper case'' and ``upper-case'' have been replaced by ``uppercase'' (ditto for ``lowercase''). The type _Bool is now correctly classified as an unsigned integer type and thus is also a basic type and an integer type. The Usual Arithmetic Conversions now specify a default type domain for the result, which allowed removing all of the explicit statements that matched the default as well as covering the cases where we forgot to specify it (e.g., ?:). Conversions in general have been cleaned up to avoid missing or conflicting requirements. 6.3.2.3 now states unambiguously that any conversion of a null pointer constant to a pointer type results in a null pointer, not just those resulting from assignment or comparison. The description of getc now states unambiguously that end- of-file is sticky. The UCN annex has been moved to where the formal definition of sequence points annex used to be to avoid renumbering the 2 SC22/WG14 N870 floating point, complex, and LIA annexes; since the UCN annex is normative, it makes sense to have it appear sooner. Please note that I still haven't decided on a final ordering of the annexes and am still soliciting suggested orderings. 2. N869 Errata 1. N847 items 10, 19, 33, and 43 were overlooked and have not been applied. Item 19 should be revisited as, upon further reflection, I believe that Clive's proposed words are exactly correct and should be used instead of the revised words in the minutes. 2. A single numbered example occurs in 6.4.9, 7.6.3.2, 7.6.4.4, and 7.21.5.8. These examples should be unnumbered. 3. In 7.12, the Recommended practice in p9 is misplaced. The parenthetical remark at the end should have been appended to F.5p2. The remainder should have been moved to the end of 5.2.4.2.2. 4. In 7.16, __bool_true_false_are_defined should be described as an ``integer'' constant rather than a ``decimal'' constant. 5. B.7 and B.17 need to be updated to match the revised main text. 3. My comments 1. Given that selection and iteration statement are now at least two and frequently three blocks, do we want to revisit the block nesting limit in 5.2.4.1? 2. In 6.6, we say that constant expressions shall not contain certain operators, except in a subexpression that is not evaluated. The exception used to be just for the operand of sizeof, but VLAs cause sizeof operands to be evaluated, so we changed it. However, there are other operators that don't evaluate certain operands in some cases (&&, ||, ?:), so this may be an unintended loosening of the rules. 3. The title of 6.8.2 should probably be changed to just ``Compound statement''. References to 6.8.2 should be checked; most of them should probably be changed to 6.8. 4. In 6.8.5.3, we should probably say something about what happens when clause-1 is a declaration (e.g., it's reached in the order of execution before the SC22/WG14 N870 3 first evaluation of the controlling expression). 5. The descriptions of the standard pragmas in 7.3.4, 7.6.1, and 7.12.2 talk about their behavior in a ``compound statement''; that should, perhaps, be changed to ``block''. 6. In 7.24.1, I believe that WCHAR_MAX and WCHAR_MIN should be described as expanding to integral constant expressions. I also believe that the description of WEOF should be moved from 7.25.1 to here. 7. The descriptions of the restartable conversion functions in 7.24.6.3.2, 7.24.6.3.3, 7.24.6.4.1, and 7.24.6.4.2 say that ``the conversion state is undefined''. I think this should say ``unspecified'' instead. 4. Open Issues 1. N847 item 4 (character set definitions) is still open. 2. The text version of the draft has not been reviewed and contains numerous formatting problems such as superscripts overprinting information from the previous line and unintelligible expressions. 3. There are still some typesetting issues to be addressed, particularly in annex F. 4. All hyphenated terms should be examined to determine where the hyphenation is appropriate and where it isn't. All italicized terms should also be examined. 5. All of the cross references need to be checked for relevance and accuracy. 6. The draft still needs some work to fully comply with Part 3 of the ISO Directives. The major issues remaining are: -- the formatting of tables -- we have many subclauses that contain text in addition to subordinate subclauses; ISO strongly discourages this -- all references to a specific version of a standard must include the date; it is not sufficient to include the date only in the Normative references or the Bibliography as we currently do 4 SC22/WG14 N870 -- annexes are required to appear in the order in which they are cited in the text (and thus there has to be a citation for each annex); if anyone has any strong feelings about ordering, please let me know -- Larry Jones