Public Comments on CD1

CD1 is the first Committee Draft of C9X. A Public Comment period has taken place, and the UK submitted several comments to it. WG14 subsequently responded to these comments. This page lists all UK-sponsored comments, showing the official ISO numbers, and the responses.

For those wanting to read the whole lot offline, here is the Full Monty - all the non-withdrawn comments in plain or zipped form.

The "resolution" column uses the following terms:

Adopted: WG14 adopted the proposal, possibly in a different place or with slightly different wording (also note that CD1 and CD2 have different subclause numbering) and it appears in CD2.
Resolved: the author is willing to accept the relevant wording in CD2, whether or not this addresses the exact comment.
Outstanding: there has been no relevant change between CD1 and CD2, and the author intends to resubmit the comment.
Irrelevant response: the formal response from WG14 is irrelevant and does not address the issue raised or the question asked. The author intends to resubmit, or has resubmitted, the comment.
N123 item 4: the comment has been resubmitted in that document and item.
Number Author Title Subclause WG14 Resolution
UK0001 CDWF Errors in applying working papers to CD1 various EY Adopted except:
  • the footnote on translation phase 2; now N847 item 2
  • the item concerning _exit (also submitted separately as UK0072)
which are outstanding.
UK0002 CDWF Padding in unions - wording adjustment 6.5.2.1 EY Adopted.
UK0003 CDWF Adjustment to permitted incompatible argument types 6.3.2.2 NI First part now N847 item 19, second part resolved.
UK0004 CDWF Shift operators - wording tidy up 6.3.7 EY Adopted.
UK0005 CDWF Make #error have the desired effect 3.18, 6.8.5 Y Adopted, but placed in clause 4.
UK0006 CDWF Clarification concerning overlapping string literals 6.1.4 EY Adopted.
UK0007 CDWF Problem with restrict and string literals 6.5.3.1 DA Irrelevant response fixed the particular case of fopen but not the general problem. N847 item 23
UK0008 CDWF The definition of normative text should be normative. Introduction, 1 AL Resolved.
UK0009 CDWF Lacuna in strftime() %z 7.16.3.6 EY Adopted.
UK0010 CDWF _NO_LEAP_SECONDS should require a sensible value 7.16.1 Y Adopted.
UK0011 CDWF require a type for _NO_LEAP_SECONDS and _LOCALTIME. 7.16.1 Y Adopted.
UK0012 CDWF Fix definition of "broken-down time". 7.16.1 AL Resolved.
UK0013 CDWF Cleanup of flexible array structure members. 6.1.2.5, 6.5.2.1 Y Adopted.
UK0014 CDWF problems with initializing unsigned char arrays. 6.5.8 NC N847 item 28.
UK0015 CDWF ensure int can hold all characters and EOF 5.2.4.2.1 N N847 item 5.
UK0016 CDWF eliminate conditional keywords 6.1.1 DA Resolved.
UK0017 CDWF fix pointer comparison 6.3.9 Y Adopted but with some wording changes. Minor adjustments in N847 item 21.
UK0018 CDWF merge predefined identifiers into one place 6.1.2.7, 6.3.1.1 AL Adopted.
UK0019 CDWF handling of characters not in the execution character set 5.1.1.2, 6.3.1.1 SD Resolved.
UK0020 CDWF Adjust wording of footnote 2 4 AL Adopted.
UK0021 CDWF Further requirements on the conformance documentation 4 NC N847 item 1.
UK0022 CDWF Translation phase 6 is inconsistent 5.1.1.2 AL Resolved.
UK0023 CDWF Removing implicit int, further lacunae 6.5.2.1, 6.5.6 EY Resolved.
UK0024 CDWF Replace footnote 25 6.1.2.5 CE N847 item 12.
UK0025 CDWF clarify the explanation of the types of an integer constant 6.1.3.2 AL Resolved.
UK0026 CDWF improve the example of character string literals 6.1.4 EN N847 item 16.
UK0027 CDWF inconsistencies in use of "basic" and "extended" character sets several E N847 item 4. Though this is marked as accepted no change has been made to the draft.
UK0028 CDWF clarify translation limit for identifiers using UCNs. 5.2.4.1 AL Resolved.
UK0029 CDWF clarify rounding to nearest 5.2.4.2.2 CE Resolved.
UK0030 CDWF Require UCNs to appear in translation phase 1 5.1.1.2 SD Resolved.
UK0031 CDWF make ispunct() true for basic punctuation characters 7.3.1.9, 7.18.2.1.9 NC Rejected, possibly on a misunderstanding. Rewritten as N847 item 40.
UK0032 CDWF tidy-up specification of overlapping scopes 6.1.2.1 EY Adopted.
UK0033 CDWF Fix wording relating to "number of arguments" 6.3.2.2 CE N847 item 18.
UK0034 CDWF Adjust wording concerning qualifiers on structure members 6.3.2.3 AL Resolved.
UK0035 CDWF Allow increment/decrement of complex objects 6.3.2.4, 6.3.3.1 AN Resolved.
UK0036 CDWF Define the result of the assignment operator 6.3.16 NC N847 item 17.
UK0037 CDWF Constant expression cannot contain the size of a VLA 6.4 AL Resolved.
UK0038 CDWF UCNs should not be permitted in preprocessing numbers 6.1.8 N Resolved. Allowing UCNs means that ## can be used to create identifiers containing them.
UK0039 CDWF Allow 'i' suffix for floating constants 6.1.3.1 AN Resolved. Complex types are not required in freestanding implementations.
UK0040 CDWF Bitfields of non-standard types should require a diagnostic. 6.5.2.1 N N847 item 22. The response suggests that a diagnostic should not be required because this is a common extension. The resumbitted proposal allows for that.
UK0041 CDWF An example uses an incomplete type in the wrong context 6.5.2.2, 6.5.2.3 EY Adopted.
UK0042 CDWF Clarify some aspects of inline 6.5.4 CE N847 items 24 and 25.
UK0043 CDWF Clarify when VLA sizes are determined 6.5.7 - Withdrawn, see PC-UK0168
UK0044 CDWF Removal of implicit int - further lacunae 6.5.7 E Adopted.
UK0045 CDWF Fix semantics of jumps in relation to VLAs 6.1.2.4, 6.6.4.2, 6.6.6.1 - Withdrawn, see PC-UK0077
UK0046 CDWF Correct ranges of bitfields in an example 6.5.7 CE N847 item 27.
UK0047 CDWF Handling of unknown preprocessing directives 6.8 CE The original comment was unclear and has been resubmitted as N847 item 6.
UK0048 CDWF Problems with UCNs in header file names 6.1.7, 6.8.2 SD Resolved.
UK0049 CDWF Handling of UCNs in character constants in #if directives 6.8.1 SD N847 item 7.
UK0050 CDWF Effects on other members of assigning to a union member 6.1.2.8.1, 6.3.2.3 M N847 item 13. The response misunderstands the issues.
UK0051 CDWF true and false are not reserved identifiers 7.1.7 SD Resolved.
UK0052 CDWF Add a __VA_COUNT__ facility for varargs macros 6.8.3 NC N847 item 9.
UK0053 CDWF Require consistency if an implementation adds to <inttypes.h> 7.4 NC Outstanding.
UK0054 CDWF Require that __cplusplus not be defined 6.8.8 II N847 item 10. This was a WG14 consensus item at the Menlo Park meeting.
UK0055 CDWF It should be explicitly possible to redefine I 7.8 AL Adopted.
UK0056 CDWF Add a symbol giving the maximum alignment 7.1.6 NC Outstanding, but only the basic item was resubmitted as N847 item 30.
UK0057 CDWF Better locale handling for wide oriented streams 7.13.2, 7.13.3, 7.19.3.10, 7.19.7 NC N847 item 32.
UK0058 CDWF Unclear how many times tmpfile() can be called. 7.13.4.3 NC N847 item 33.
UK0059 CDWF Add a description of the start symbol to the preprocessing grammar 6.8 AL Resolved.
UK0060 CDWF Clarify multiple insertions of <assert.h> 7.2 EY Adopted.
UK0061 CDWF Explicitly allow assert on non-integer arguments 7.2.1 AL Irrelevant response which has actually made things worse. Now N847 item 36.
UK0062 CDWF Provide a way to make the standard streams binary 7.13.3, 7.13.5.4 Y Adopted.
UK0063 CDWF Provide a way to compare fpos_t values. 7.13.9 NC N847 item 35.
UK0064 CDWF Clarify the actions of fread and fwrite 7.13.8.1, 7.13.8.2 CE N847 item 34.
UK0065 CDWF What is the precision of floating point calculations ? various Q Resolved. See discussion in N829.
UK0066 CDWF The term "access" is not well defined. various E Some changes in this area have been made. A revised version submitted as N847 item 43.
UK0067 CDWF tidy up definitions of <stdlib.h> macros 7.14 E N847 item 37.
UK0068 CDWF Change the description of div() to show consistency 7.14.6.2 AL Resolved.
UK0069 CDWF Reorganise annex G as two separate items Annex G AN Resolved. WG14 believe there are technical problems with doing this.
UK0070 CDWF Type-generic macros should be generally useful 7.9 AN The author is waiting for a proper response to this comment. N847 item 38.
UK0071 CDWF Clarify included file process 6.8.2 CE N847 item 8.
UK0072 CDWF _exit function 7.11.1.1, 7.14.4 AN N847 item 29. WG14 claim this is incompatible with POSIX.
UK0073 CDWF clarify order of evaluation of expressions within full declarators 6.5.5 CE Resolved.
UK0074 CDWF a pointer to an object should point to its first byte 6.2.2.3 EY Adopted.
UK0075 CDWF problems with UCNs various SD Resolved.
UK0076 CDWF Alternate forms of main() are not well-enough defined 5.1.2.2.1, 5.1.2.2.3 EY Resolved.
UK0077 CDWF Fix semantics of jumps in relation to VLAs 6.1.2.4, 6.6.4.2, 6.6.6.1, 7.10.2.1 Y Adopted.
UK0078 NMM Universal character name handling 5.1.1.2, 5.2.1 SD
UK0079 NMM Source line splicing 5.1.1.2 NC
UK0080 NMM Universal character names and #include 5.1.1.2 SD
UK0081 NMM Universal character names and character constants 5.1.1.2, 6.1.3.4, 6.1.4, Annex B Y
UK0082 NMM Source character set values 5.2.1 NC
UK0083 NMM Multibyte characters and C89/C9X changes 5.2.1.2 SD
UK0084 NMM Identifier lengths 6.1.2 SD
UK0085 NMM The escape character 5.2.2, 6.1.3.4 NC
UK0086 NMM Invalid but skipped pre-processor directives 6.8.1 CE
UK0087 NMM Macros for format specifiers 7.4.4 AL
UK0088 NMM Direct input/output functions 7.13.8 NC
UK0089 NMM Requiring line buffering on stderr 7.13.3 M WG14 state that there are intentionally no semantics for buffering.
UK0090 NMM Determining whether a stream is interactive 7.13.5 NC
UK0091 NMM Truncating a file 7.13.5 DI
UK0092 NMM Hard I/O errors and EOF 7.13.9.2, 7.13.9.3, 7.13.9.5, 7.13.10.1 M WG14: the implementation can use its own indicator driven from the underlying one to obtain the required semantics.
UK0093 NMM I/O error diagnosis function 7.13.10 LU
UK0094 NMM The srand function 7.14.2.2 NC
UK0095 NMM BCPL muldiv for multi-precision arithmetic 7.14.6 LU
UK0096 NMM Signal handlers and signal classes 7.11.1.1 NC
UK0097 NMM Reliable signal handling 5.1.2, 7.11 NC
UK0098 NMM Compliance footnote 4 NC
UK0099 NMM Program termination 5.1.2.2.3 Y @@@@Improper termination of main returns an unspecified status.
UK0100 NMM Cross-reference error 6.1.2 EY Resolved.
UK0101 NMM Linkages of identifiers 6.1.2.2 AL Resolved.
UK0102 NMM Linkages of identifiers 6.1.2.2 BC Resolved, but need to ensure Rationale is updated.
UK0103 NMM Array subscripting example 6.3.2.1 EY Resolved.
UK0104 NMM Additive operators wording 6.3.6 AL Resolved.
UK0105 NMM Structure and union specifiers 6.5.2.1 Q Resolved.
UK0106 NMM Function specifiers 6.5.4 M Outstanding.
UK0107 NMM Variably modified array declarators 6.5.5.2 EY Resolved.
UK0108 NMM Ill-definition in array declarators 6.5.5.2 NC
UK0109 NMM Constraints on the return statement 6.6.6.4 EY Resolved.
UK0110 NMM Example of the return statement 6.6.6.4 E Outstanding: the change made is not an improvement.
UK0111 NMM Clarification of function definitions 6.7.1 NC Outstanding: the change made is not an improvement.
UK0112 NMM Symbol providing alignment of objects 7.1.6 NC
UK0113 NMM Ambiguity in macros for integer constants 7.4.3 NC
UK0114 NMM Ambiguity in multibyte character functions 7.14.7, 7.18, 7.19 RS
UK0115 NMM Ambiguity in the wcstok function 7.19.4.5.7 E
UK0116 NMM Ambiguity in restartable wide/multibyte conversion functions 7.19.7.3, 7.19.7.4 NC
UK0117 NMM Major incompatibility with C89 6.1.2.5 PR Outstanding.
UK0118 NMM Enhancements to restrict for optimisation 6.5.3, 6.5.3.1, 6.7.1 TR Outstanding. This is a major issue for the UK.
UK0119 NMM Ambiguity in specification of FLT_ROUNDS 5.2.4.2.2 Q Resolved.
UK0120 NMM Rounding in ambiguous cases without IEEE 5.2.4.2.2 CE Irrelevant response.
UK0121 NMM Multiple integer representations and precision 6.1.2.8.2 CE Irrelevant response.
UK0122 NMM Problems with multiple zero representations etc. 6.1.2.8.2 NC Irrelevant response.
UK0123 NMM Hexadecimal floating-point constants 6.1.3.1 PR Resolved.
UK0124 NMM Floating to integer conversion 6.2.1.3 Q
UK0125 NMM Initialisation to zero 6.5.8, F.7.5 AL Partly outstanding.
UK0126 NMM Which functions can raise floating-point exceptions 7.6 CE Irrelevant response.
UK0127 NMM Type of fexcept_t 7.6 M Resolved.
UK0128 NMM Floating-point exception values 7.6.2 EY Resolved.
UK0129 NMM Failure when handling exception flags 7.6 N*
UK0130 NMM fegetround and non-standard rounding modes 7.6.3.1 DA WG14: additional rounding direction macros are permitted.
UK0131 NMM fesetround and feholdexcept return values 7.6.3.2, 7.6.4.2 Q Zero now means success. The example still needs correcting.
UK0132 NMM Obscure wording in fesetround 7.6.3.2 EY Resolved.
UK0133 NMM fesetround is often unimplementable 7.6.3.2 N*
UK0134 NMM fegetenv, fesetenv and feupdateenv are often unimplementable 7.6.4.1, 7.6.4.3, 7.6.4.4 N*
UK0135 NMM feholdexcept is sometimes unimplementable 7.6.4.2 N*
UK0136 NMM Obscure wording about constant arithmetic 7.7 AL Resolved.
UK0137 NMM Allow infinities and NaNs for each precision 7.7 N*
UK0138 NMM Provide IEC 559 required support for signalling NaNs 7.7, F.2.1, F.3 N* Resolved.
UK0139 NMM Ambiguity in specification of FP_FAST_FMA 7.7 EY Resolved.
UK0140 NMM What does "supported by conversion" mean? 7.7 SD Irrelevant response.
UK0141 NMM Which <math.h> functions can set errno 7.7.1 CE Irrelevant response.
UK0142 NMM Extraordinary roundoff error 7.7.1 Q Irrelevant response.
UK0143 NMM <math.h> and floating-point signals 7.7.1 N*
UK0144 NMM Serious confusion in the signbit macro 7.7.3.2 CE Irrelevant response.
UK0145 NMM Efficiency of the ilogb function 7.7, 7.7.6.14 PA Resolved.
UK0146 NMM The remquo function is confusing and hard to implement 7.7.10.3 TE
UK0147 NMM Ambiguity in the copysign function 7.7.11.1 TE Resolved, but need to confirm the Rationale is updated.
UK0148 NMM The nan() function seems pointless and confusing 7.7.11.2 M Resolved.
UK0149 NMM nextafterx() seems pointless and confusing 7.7.11.4 CE Resolved.
UK0150 NMM Mathematically incorrect behaviour of fmax/fmin 7.7.12.2, 7.7.12.3, F.9.9.2, F.9.9.3 PR Resolved.
UK0151 NMM Why mention degrees versus radians? 7.8.2 Q Resolved.
UK0152 NMM Error handling for complex functions 7.8.2 N*
UK0153 NMM carg() is undefined for a complex zero 7.8.2.19 N*
UK0154 NMM Is the cproj function useful? 7.8.2.22 N* Resolved, though response was irrelevant.
UK0155 NMM The status of __STD_IEC_559_COMPLEX__ Annex F PR Irrelevant response.
UK0156 NMM Permitting diagnostics for uncleared exception flags Annex F N*
UK0157 NMM Constant expressions and IEEE F.7.4 Q Resolved.
UK0158 NMM Floating-point exception flags and errno F.9 N*
UK0159 NMM atan2(+-0,+-0) and IEEE F.9.1.4 N*
UK0160 NMM Inconsistent wording in frexp F.9.3.4 EY Resolved.
UK0161 NMM pow(+-inf,+-0) or pow(NaN,+-0) and IEEE F.9.4.3 N*
UK0162 NMM Complex infinities and NaNs 6.2.1.6 N*
UK0163 NMM Imaginary, complex infinities, NaNs and inexact Annex G, G.3 N*
UK0164 NMM Complex multiplicative operators G.4.1 AL
UK0165 NMM Incorrect claims of LIA-1 conformance H.3.1, H.3.1.2 NC Irrelevant response.
UK0166 NMM Indication of failure 5.1.1.3 BS Resolved.
UK0167 CDWF require side effects in VLA declarations to work normally 6.5.5.2 AN N847 item 26.
UK0168 CDWF Clarify when VLA sizes are determined 6.5.7 AL Adopted with different wording.
UK0169 CDWF relax restrictions on the offsetof macro 7.1.6 NC N847 items 11 and 31.
UK0170 NMM Ordering of sequence points 5.1.2.3 CE
UK0171 NMM Ambiguities and traps in VLAs 6.5.5.2 N
UK0172 NMM typedef and VLAs 6.5.7 SD
UK0173 NMM The alloca 'function' 7.14.3 N Resolved.

The WG14 response codes are as follows:

AD The request is reflected in the current draft.
AL Changes have been made along the lines you suggested.
AM This proposal would introduce an undesired ambiguity.
AN The Committee has voted against this idea.
AW The Standard provides another way to do this.
AY The Committee has voted for this idea.
BC This proposal would invalidate too much existing source code.
BD The Standard reflects the base document in this regard.
BE The Standard remedies a deficiency in the base document.
BS This concerns matters beyond the scope of IEC/ISO WG14 / NCITS J11.
CC This was considered a comment rather than an issue.
CE The Committee believes this is clear enough as is.
CS Compiler "switches" can produce multiple implementations.
DA The Committee chose a different approach to deal with this issue.
DI In some cases, this proposal would be difficult to implement.
E This was accepted as an editorial change.
EA Extensions are allowed in this regard, but they are not required.
EF This could not be efficiently implemented on many architectures.
EI The facility was based on an existing implementation.
EL Adding too many facilities would unduly enlarge the language.
EN This proposed editorial change was discussed but not accepted.
EP The Standard reflects widespread existing practice in this regard.
ER This was accepted as an editorial change to the Rationale.
ES This was accepted as an editorial change to the Standard.
EY This editorial change has been made.
FE The Standard must accommodate anticipated future evolution.
IF It was decided to allow implementors freedom in this regard.
II This is an issue for the implementor, not the Standard.
IP This would impair development of portable source code.
LU This was considered to be an invention of limited utility.
M This is a misinterpretation of correct wording in the document.
MC Existing implementations may indeed not meet Standard criteria.
N The Committee discussed this proposal but decided against it.
N* The Committee discussed this proposal but decided against it. This comment recommends changes of a scope that would require substantial Committee deliberation of complete written proposals. Although the recommendation might lead to useful enhancements or alternative approaches, the Committee believes that the current specification meets the floating-point objectives noted in the NCEG charter and carried over into J11.
NB This does not appear to be based on prior art.
NC No change to the existing wording was considered necessary.
NI This was not considered an issue requiring action.
NL The Committee decided not to have "levels" of the Standard.
NP A specific proposal is needed before action can be taken.
NT The Standard is not intended to double as a tutorial.
NU The Committee didn't understand this proposal as worded.
OP The Standard supports a one-pass compilation model.
PA This proposal conflicts with too much prior art.
PC This proposal would conflict with other portions of the Standard.
PD The Standard reflects the result of previous discussion of this issue.
PO This proposal would preclude code optimization.
PR The Committee has reaffirmed this decision on more than one occasion.
Q This was considered a request for information, not an issue.
QI Quality of implementation is beyond the scope of the Standard.
RR This issue can be resolved by a careful reading of the Rationale.
RS This issue can be resolved by a careful reading of the Standard.
SC This would run counter to the historical "spirit of C".
SD The Committee has made significant changes in this area.
UC Such a constraint on implementations was deemed undesirable.
TE This proposal contains insurmountable technical errors.
TR This is too radical a change to adopt at this stage.
UF This proposal would unduly favor a limited class of architectures.
VA The Standard must accommodate a variety of architectures.
VC The Standard must accommodate a variety of character sets.
VE The Standard must accommodate a variety of environments.
VP The Standard must accommodate a variety of preprocessing methods.
WR The present wording is required for accuracy and completeness.
Y This proposal was accepted.

Back Back to the Public Comments page. Up Back to the C page. CDWF Back to Clive's home page.