https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99720

            Bug ID: 99720
           Summary: Feature Request: Better errors for C++ features when
                    compiling C (pass by reference)
           Product: gcc
           Version: 9.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: cameron at tacklind dot com
  Target Milestone: ---

I'm embarrassed that I spent so long on this issue, to the point that I thought
it was worth writing this issue in the hope that it might save someone the same
trouble. If this is inappropriate (or already address), my apologies.

I normally work in the C++ world for simple embedded programming, mostly just
with a subset of the language features. I love the sugar. The old "C" way of
doing things has always bugged me. I'm thinking of basic features like
overloading function.

Now I'm working on a project that has a lot of legacy C that's too much work to
convert to C++.

In implementing a simple function, without thinking, I used a reference (`void
foo(int&i);`) to pass a variable to a function (not a plain pointer). The
astute among you will remember that passing by reference is a C++ feature that
simply does not exist in C.

Error message:
> test.c:1:13: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token

It took me most of a day to realize I was trying to use a feature that simply
doesn't exist in C (lots of other #define macros that contributed to my
confusion). It feels like this error message should be easy enough to improve.

With how often C and C++ get conflated, it seems prudent to me to ensure that
accidentally using C++ features in a C compiler would generate warnings or
errors that point towards these possible mistake explicitly.

Reply via email to