I use function pointers to loop through state machines.
They are declared global as:
void (*mdb_thread)(void);
void (*main_thread)(void);
Following code is problematic:
// wait for transmission completed and start timeout then
void mdb_watch_transmit(void)
{
if(transmit_ok)
{
timeout_start_5s();
transmit_ok = 0;
mdb_thread = &mdb_watch_after_transmit();
}
}
// wait for timeout or reception of data
void mdb_watch_after_transmit(void)
{
if( timeout() )
{
main_thread = &reset();
mdb_thread = &mdb_watch_transmit(); // famous line 79 from the error
}
}
The function prototypes exist in a header file included in the c file.
The error:
mdb_rs232.c:79: error 47: indirections to different types assignment
from type 'void near* '
to type 'void function ( ) code* '
make: *** [mdb_rs232.rel] Error 1
In the first function he doesn't complain but in the second he does :s
As far as i can see i do nothing different, just passing the adres of a
function to it and both functions are the same type (void/void) so i can't
see whats the problem.
The function pointers are executed in a while 1 loop in the main function in
another file, there are those pointers prototyped but with the extern
keyword since i declare them in this file where the functions are written.
Any thoughts?
Cheers
Bart
------------------------------------------------------------------------------
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user