openexr-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Openexr-devel] use "" instead of <> for header?


From: Florian Kainz
Subject: Re: [Openexr-devel] use "" instead of <> for header?
Date: Thu, 23 Feb 2006 19:01:44 -0800
User-agent: Mozilla Thunderbird 1.0 (X11/20041207)

The C++ standard seems to say that, no matter if you include <foo>
or "foo", where compiler looks for foo is implementation-defined, and
"foo" may or may not behave the same way as <foo>.  The behavior you
want is not guaranteed.  According to section 16.2:

    A preprocessing directive of the form

        #include <h-char-sequence> new-line

    searches a sequence of implementation-defined places for a header
    identified uniquely by the specified sequence between the < and >
    delimiters [...]

    A preprocessing directive of the form

        #include <q-char-sequence> new-line

    causes the replacement of that directive by the entire contents
    of the source file identified by the specified sequence between
    the " delimiters.  The named source file is searched for in an
    implementation-defined manner if this search is not supported,
    or if the search fails, the directive is reprocessed as if it
    read

        #include <h-char-sequence> new-line

    [...]


Kai-Uwe Behrmann wrote:
This is a request to exchange <> against "" in the public OpenEXR headers.


The header files distributed with OpenEXR include each other with the
  //OpenEXR header file
  #include <name_of_other_exr_header.h>

sheme. Thus the compiler searches in the global include search paths for the files. With this variant I need to fully specify the path on the compile line, which is extra work. I come with CinePaint compilation regularily around this stone, and users as well. But I think the OpenEXR headers should see each the other in a private sense and not a global one.


Using "" instead would lead to searching in local paths:

  // OpenEXR header file
  #include "name_of_other_exr_header.h"

Now the compiler finds the other OpenEXR headers from a base include path. There can reside many subdirectories which will be recognized, like for OpenEXR, FL (FLTK) or libexif. Thus one could simply include like follows in an application:

  // my fancy app
  #include <OpenEXR/ImfRgbaFile.h>

+ use one base include path on the compiler line and everything just works.


regards
Kai-Uwe Behrmann
+ development for color management + imaging / panoramas
                                + email: address@hidden
                                + http://www.behrmann.name



_______________________________________________
Openexr-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/openexr-devel






reply via email to

[Prev in Thread] Current Thread [Next in Thread]