This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: C2X Proposal, merge '.' and '->' C operators
This is a view of the patch/diff... This is really just +6 lines... ` if(
!flag_iso2xc) `{` `}` `attribute fallthrough` `if(flag_iso2cx)` `return
ptr`
https://github.com/gcc-mirror/gcc/pull/41/commits/915bcffdea0aa4fead66c41830b66aa3db212307
While the compiler does compile itself, and a simple test case,
successfully
```
#include <stdio.h>
struct s {
int a, b;
};
void f( void ){
struct s S;
struct s *P = &S;
P.a = 5; // 'wrong' operator
P.b = 13; // 'wrong' operator
printf( "Output: %d %d\n", S->a, S->b ); // 'wrong' operators...
}
int main( void ) {
f();
return 0;
}
```
I haven't built the testsuite...
On Mon, Dec 16, 2019 at 5:51 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?
>
> D
>