On 2014-02-12 11:26, Alex Rousskov wrote:
On 02/11/2014 04:48 AM, Kinkie wrote:

The topic I'm thinking of is the policy of autoconf-detecting some
system headers we use. While this is undoubtably good for C- and
system- headers, it doesn't make much sense for pure C++ headers,
which are very strongly defined by the standard and for which there is
no compatilibty wrapper. In these cases, making the include
conditional will only result in a less-readable error message when the
build eventually fails.

What do you think?

I agree that there is little point in guarding standard headers that
provide required classes that we do not provide a replacement for. IIRC,
I have not been adding _new_ guards for such header files for a while.

Deciding which headers qualify may get a little tricky sometimes, but
the danger is small, and most cases like <set> and <vector> are probably
clear.


Cheers,

Alex.

These provide some very useful info:
http://stackoverflow.com/questions/2027991/list-of-standard-header-files-in-c-and-c
http://www.cplusplus.com/reference/

I would draw the line at ANSI C-style and C++ headers.

Proposal:

* system C headers (with a .h suffix):
 - always include with <>
 - mandatory HAVE_FOO_H wrapper
 - avoid where C++ alternative is available

* system C++ headers (without any extension suffix):
 - always include with <>
 - omit any HAVE_ wrapper
 - if the file is not portable, do not use it

* custom headers provided by Squid:
  - omit wrappers
  - always include with ""
  - use full path (only src/ prefix may be omitted)


Also, for now restricting ourselves to the C++98 set of headers since we have not made C++11 support mandatory yet.

Amos

Reply via email to