This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Always include defs.h first.
On Thu, Nov 8, 2012 at 8:49 AM, Pedro Alves <palves@redhat.com> wrote:
> On 11/08/2012 01:34 AM, Doug Evans wrote:
>> On Wed, Nov 7, 2012 at 12:11 PM, Pedro Alves <palves@redhat.com> wrote:
>>> defs.h should always be the first included header in a .c file. In
>>> turn, this means that a foo.h header should not need to include
>>> defs.h, as the .c file always includes defs.h before including foo.h.
>>
>> fwiw, I like the idea of header files including what they themselves
>> need, and not assuming the includer will do it for them, even for
>> defs.h.
>> It's something I'd like to see gdb move towards, but I'm not in a hurry. :-)
>
> Sorry, I hadn't imagined the change could be disagreeable. Otherwise, I'd
> have waited.
>
> I'm also of the camp that advocates that header files should include what
> they themselves need. OTOH, IMO, defs.h is special.
>
> - It's defs.h that includes config.h. Including config.h in headers
> is bad practice. Comparing to gcc, I'd say defs.h is currently a
> kind of a mix of system.h and coretypes.h, and whatnot.
> - It's needed practically _everywhere_.
>
> Also:
>
> $ ls gdb/*.h | wc -l
> 232
>
> since not including defs.h in headers is the de facto standard on the code
> base, where only 4 of those 232 had "#include defs.h" in them, and another
> include was being introduced exactly because the corresponding .c file was in
> error, I thought it best to just get rid of those 4 instances making the
> codebase a little bit less inconsistent.
Don't abort on my account - Consistency is Good.
Another thing to consider:
I'd like to move gdb to being more componentized (for lack of a better word).
i.e., made up of application independent pieces.
common/ is a minor step in this direction.
Note that gdbserver doesn't have defs.h and lots of files in common/ do the
#ifdef GDBSERVER
#include "server.h"
#else
#include "defs.h"
#endif
dance.
But again, don't abort on my account, Consistency Is Good, even if
there's also a long term plan to do something different.