420. is std::FILE a complete type?

Section: 31.10 [file.streams] Status: CD1 Submitter: Martin Sebor Opened: 2003-09-18 Last modified: 2017-06-15

Priority: Not Prioritized

View all other issues in [file.streams].

View all issues with CD1 status.

Discussion:

7.19.1, p2, of C99 requires that the FILE type only be declared in <stdio.h>. None of the (implementation-defined) members of the struct is mentioned anywhere for obvious reasons.

C++ says in 27.8.1, p2 that FILE is a type that's defined in <cstdio>. Is it really the intent that FILE be a complete type or is an implementation allowed to just declare it without providing a full definition?

Proposed resolution:

In the first sentence of [fstreams] paragraph 2, change "defined" to "declared".

Rationale:

We don't want to impose any restrictions beyond what the C standard already says. We don't want to make anything implementation defined, because that imposes new requirements in implementations.