compiling gnucash2 on FC5-devel (gcc 4.1.0)

John Ellson ellson at research.att.com
Sun Jan 15 11:33:53 EST 2006


Derek Atkins wrote:
> ag381597 at ohio.edu writes:
>
>   
>> 3) in src/register/ledger-core/split-register.c , some function return values
>> are being typecast yet ignored.  I found that quite strange, but simply created
>> a variable to which the return value could be assigned:
>>
>>  --- src/register/ledger-core/split-register.c   2006-01-12 22:09:58.000000000 -0500
>> +++ ../split-register.c 2006-01-12 22:02:45.000000000 -0500
>> @@ -1331,6 +1331,7 @@
>>     const char *memo;
>>     const char *desc;
>>     Split *split;
>> +   Account * acct;
>>
>>     if (!reg) return FALSE;
>>
>> @@ -1389,8 +1390,8 @@
>>       return FALSE;
>>
>>     /* Validate the transfer account names */
>> -   (void *)gnc_split_register_get_account (reg, MXFRM_CELL);
>> -   (void *)gnc_split_register_get_account (reg, XFRM_CELL);
>> +   acct = gnc_split_register_get_account (reg, MXFRM_CELL);
>> +   acct = gnc_split_register_get_account (reg, XFRM_CELL);
>>     
>
>
> I suspect these are supposed to be (void), not (void *)...  I'd have
> to look at the code to understand why it's ignoring the return value
> of these functions.
>
>   

I would suspect so too, but I recently learned in another project that 
casting the
result of functions to (void) is not portable.  In particular Sun's and 
SGI's compilers
don't like that technique.   Perhaps that doesn't matter to gnucash if 
it is gcc only?

Assigning to a variable of the right type is probably better (more 
portable), but I'm a bit
surprised that you are not seeing: "warning: value computed is not used" 
instead?
Thats perhaps becasue I don't properly understand the warning in the 
other project.

John


More information about the gnucash-devel mailing list