On Thu, 17 Dec 2009, Tamas TEVESZ wrote: Hi,
> while doing a new port, came across this: > g++ -DHB_OS_UNIXWARE -I. -I../../../../../include -D_SCO_DS -Wall -W > -O3 -o expropt1.o -c ../../../expropt1.c > ../../../expropt1.c: In function `struct HB_EXPR_ * > hb_compExprNewNegate(HB_EXPR_ *, _HB_COMMON *)': > ../../../expropt1.c:1066: integer constant out of range > this only happens with g++. 2.95 is the only one there is, and it is > entirely possible it is a compiler error, as it has other deficiencies > it theoretically shouldn't. Two possible reasons: 1. bug in g++ lexer If the results are correct and not stripped to 32 bits then it minor bug - this part is missing in your tests 2. when g++ is used then in header files LLONG_MAX constant is defined without LL suffix, i.e.: #define LLONG_MAX 9223372036854775807 instead of: #define LLONG_MAX 9223372036854775807LL In both cases it's not Harbour problem and if the results are correct then you can ignore it. 2.95 is quite old version so I do not think it should be reported to GCC authors but if it's the only port of GNUC for SCO then you may want to do inform about it someone who manage it so it can be cleaned. printf( "LLONG_MAX=%lld, [%lld], , [%lld]\n", LLONG_MAX, 1234567890123456LL + 9000000000000000LL, 8877665544332211LL ); should give you basic answer if such values are managed correctly by compiler. best regards, Przemek _______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour