lvqcl wrote:

> So I thought that the directive
>     #if defined __clang__ && __has_attribute(__target__)
> is ok for GCC because "defined __clang__" is false and
> preprocessor shouldn't try to parse "__has_attribute(...)" part.

It seems this is actually a pre-processor parsing bug. It hits
the bug *before* the logic is evaluated. My current solution in
the above PR is to avoid `__has_attribute` and use this:

    #elif defined __clang__ && (__clang_major__ > 3 || \
          (__clang_major__ == 3 && __clang_minor__ >= 6)) /* clang */

which I have tested with clang 3.6. If someone has an earlier version
of clang and can verify that it work, I'll drop the version number.

Erik de Castro Lopo
flac-dev mailing list

Reply via email to