
On 11/30/05 2:07 PM, "David Abrahams" <dave@boost-consulting.com> wrote:
Daryle Walker <darylew@hotmail.com> writes:
On 11/29/05 4:27 PM, "Jason Kankiewicz" <jkankiewicz@advpubtech.com> wrote:
+# elif (defined(__GNUC__) && ((__GNUC__ >= 3 && __GNUC_MINOR__ >=5) || __GNUC__ >= 4))
Shouldn't the check for GCC 3.x be:
__GNUC__ == 3 && __GNUC_MINOR__ >= 5
instead of the currently over-broad version? Otherwise version numbers like 4.6 or 5.9 would match on that phrase, which is wrong. They should match on the "__GNUC__ >= 4" phrase instead.
Well, that would certainly be clearer, but it is semantically equivalent, is it not?
Sort of; it happens to be equivalent for the 3.x series. The phrase implies it's applicable to any higher series (4.x, 5.x, etc.), but that's wrong because it fails numbers like 4.2. The "__GNUC__ >= 4" phrase saves you from that. The next similar error may be more insidious.
The problem phrase should only match on 3.5 through 3.9.x.
"problem phrase?"
The phrase I'm originally talked about ("__GNUC__ >= 3 && __GNUC_MINOR__
=5").
-- Daryle Walker Mac, Internet, and Video Game Junkie darylew AT hotmail DOT com