On 12/16/19, J Decker <d3c...@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.
I have mixed feelings on this proposal. On the one hand, when I was first learning C, the difference between '.' and '->' was a major source of confusion (as was understanding pointers in general). On the other hand, now that I understand them a bit better, I find the distinction to be helpful in reducing ambiguity and making code more readable. > > 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? I saw some Twitter threads and StackOverflow Q&As on the topic before; I'm not really sure how to search to find them again though, given that the punctuation involved is often treated as special characters... > > D >