C2X Proposal, merge '.' and '->' C operators

Ian Lance Taylor iant@golang.org
Sat Dec 21 18:51:00 GMT 2019

On Mon, Dec 16, 2019 at 5:52 AM J Decker <d3ck0r@gmail.com> wrote:
> Here's the gist of what I would propose...
> https://gist.github.com/d3x0r/f496d0032476ed8b6f980f7ed31280da
> In C, there are two operators . and -> used to access members of struct and
> union types. These operators are specified such that they are always paired
> in usage; for example, if the left hand expression is a pointer to a struct
> or union, then the operator -> MUST be used. There is no occasion where .
> and -> may be interchanged, given the existing specification.
> It should be very evident to the compiler whether the token before '.' or
> '->' is a pointer to a struct/union or a struct/union, and just build the
> appropriate output.
> The source modification for the compiler is very slight, even depending on
> flag_c2x(that's not it's name).  It ends up changing a lot of existing
> lines, just to change their indentation; but that shouldn't really count
> against 'changed lines'.
> I'm sure, after 4 score and some years ('78-19) that it must surely have
> come up before?  Anyone able to point me to those existing proposals?

For what it's worth, that is how Go works.  The '.' operator is used
for struct fields regardless of whether the left hand operand is a
struct or a pointer to a struct.


More information about the Gcc mailing list