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
Received on Tue Feb 11 2014 - 22:53:21 MST
This archive was generated by hypermail 2.2.0 : Wed Feb 12 2014 - 12:00:12 MST