On Fri, Dec 02, 2022 at 03:57:44PM +0100, Jiří Wolker via Gcc wrote: > > Hi, > > I've met a guy that is learning C and got stuck when the linker produced > a screenful of messages about that he did something define multiple > times. The cause of the problem was trivial: > > He did ``#include "something.c"'' in his code. > > In the past, I also did this thing multiple times and I would appreciate > a warning produced by the gcc when compiling C/C++ file that includes a > file ending in .c, .cx, .cpp or .cxx. > > What do you think about that? > > I would prefer to make this enabled when -Wextra is used.
The problem is that a lot of beginners don't use -Wextra, so the warning wouldn't be displayed anyway. > Based on my past experience with using .c files in the include > directive, I can think of these problems. > > - Sometimes, I want to include a file that is definitely not a header, > but also it is not a stand-alone source file. I personally prefer > using .inc suffix, but some people possibly terminate the file names > with .c suffix like a source file. > > Example: list of enum fields included from a separate file that was > generated by a script > > - In some projects, someone can deliberately want to include another > source file. For example, this can happen when doing unit tests and > you do not want to specify the source file name on the command line. Indeed, e.g. elfutils uses this a lot: #define LIBELFBITS 64 #include "elf32_xlatetom.c" We use including .c in our testsuite a lot as well. So I'm afraid this would get -1 from me personally, sorry. > If you accept that, I can try to implement that. (That would be my first > contribution to this project and I do not know gcc codebase, but it > looks like a relatively simple change.) Do you think that it would need > a copyright assignment? I think it would. Thanks, Marek