pub struct Remarks(/* private fields */);Expand description
What a constant does that the dialect being compiled has an opinion about, or that happened to it on the way to a value.
A bitmask rather than a list, because a constant may earn several and a Vec per constant
on a file full of them is a cost with nothing to show for it. Every one of these is legal
in the dialect this compiler defaults to, so none of them is an error here: the caller
decides what -pedantic, -Woverflow and -Werror make of them.
Implementations§
Source§impl Remarks
impl Remarks
Sourcepub const BINARY: Remarks
pub const BINARY: Remarks
A 0b constant before C23, where it is a GNU extension both compilers accept.
Sourcepub const SEPARATORS: Remarks
pub const SEPARATORS: Remarks
A digit separator before C23, which neither compiler accepts there.
Sourcepub const LONG_LONG: Remarks
pub const LONG_LONG: Remarks
An ll suffix under -std=c89, where GCC says “use of C99 long long integer constant”.
Sourcepub const UNSIGNED: Remarks
pub const UNSIGNED: Remarks
A decimal constant with no u suffix that fits no signed type, so it became an unsigned
one. GCC says “integer constant is so large that it is unsigned”, and it is worth saying
because the constant’s arithmetic is now unsigned and its negation is not negative.
Sourcepub const HEX_FLOAT: Remarks
pub const HEX_FLOAT: Remarks
A hexadecimal floating constant before C99, where GCC says “use of C99 hexadecimal floating constant”.
Sourcepub const EXTENDED_SUFFIX: Remarks
pub const EXTENDED_SUFFIX: Remarks
A suffix that names a type ISO C does not have: q, w, or one of the _FloatN and
_FloatNx ones. GCC says “non-standard suffix on floating constant”, and separately
that ISO C does not support the type.
Sourcepub const DOUBLE_SUFFIX: Remarks
pub const DOUBLE_SUFFIX: Remarks
A d suffix, which is a double written the long way. GCC gives this one its own
wording, “suffix for double constant is a GCC extension”, and gives it in every dialect
rather than only under -pedantic.
Sourcepub const IMAGINARY: Remarks
pub const IMAGINARY: Remarks
An i or j suffix. GCC says “imaginary constants are a GCC extension”, in every
dialect, because no version of C has a spelling for one.
Sourcepub const OUT_OF_RANGE: Remarks
pub const OUT_OF_RANGE: Remarks
A value too large for its type, which became an infinity. GCC says “floating constant exceeds range of ‘double’” and names the type.
Sourcepub const TRUNCATED: Remarks
pub const TRUNCATED: Remarks
A nonzero value too small for its type, which became a zero. GCC says “floating constant truncated to zero”, and it is worth saying because the program now divides by zero where it meant to divide by something very small.
Sourcepub const MULTICHARACTER: Remarks
pub const MULTICHARACTER: Remarks
A character constant holding more than one character, whose value GCC builds by shifting them together and which the standard leaves implementation defined. GCC says “multi-character character constant”.
Sourcepub const TOO_LONG: Remarks
pub const TOO_LONG: Remarks
A character constant holding more characters than its type has room for, so the ones at the front are gone. GCC says “character constant too long for its type”, and says it instead of the multi-character remark rather than as well as it.
Sourcepub const UNKNOWN_ESCAPE: Remarks
pub const UNKNOWN_ESCAPE: Remarks
An escape whose letter means nothing, which is the letter itself and a warning in both compilers. GCC says “unknown escape sequence”.
Sourcepub const NON_ISO_ESCAPE: Remarks
pub const NON_ISO_ESCAPE: Remarks
\e, the escape character, which both compilers have and no standard does. GCC says
“non-ISO-standard escape sequence”.
Sourcepub const HEX_ESCAPE_OUT_OF_RANGE: Remarks
pub const HEX_ESCAPE_OUT_OF_RANGE: Remarks
A \x escape whose value does not fit the element it is written in, so it was truncated.
GCC says “hex escape sequence out of range”.
Sourcepub const OCTAL_ESCAPE_OUT_OF_RANGE: Remarks
pub const OCTAL_ESCAPE_OUT_OF_RANGE: Remarks
An octal escape whose value does not fit the element it is written in. GCC gives this its own wording, “octal escape sequence out of range”, which is why it is its own flag.