Thank you, Georg-Johann, I will try this and report. :)
On Mon, Jun 16, 2014 at 3:19 PM, Georg-Johann Lay <a...@gjlay.de> wrote: > Am 06/13/2014 12:06 PM, schrieb Royce Pereira: > >> Hi all, >> >> Continuing with the latest avr-gcc, and playing with the new '__flash' >> qualifier, I'm facing some new warnings, not seen before. >> >> I have this: >> //=================== >> void func1(void) >> { >> //........ >> } >> //=================== >> void func2(void) >> { >> //........ >> } >> //=================== >> void func3(void) >> { >> //........ >> } >> //=================== >> >> __flash void (*funcArray[])(void) = { func1, func2, func3 } ; >> >> //==================== >> unsigned char funcNo; >> >> int main(void) >> { >> //...code that sets 'funcNo' >> >> (funcArray[funcNo])() ; //call the desired function from the >> array. >> >> return 0 ; >> } >> //============================ >> /* >> No error is thrown and the code runs fine on the target board too. >> >> But I get the following warnings, and I don't know why : >> >> warning: initialization from incompatible pointer type [enabled by >> default] >> { func1, func2, func3 } ; >> ^ >> >> warning: (near initialization for 'funcArray[0]') [enabled by default] >> warning: initialization from incompatible pointer type [enabled by >> default] >> warning: (near initialization for 'funcArray[1]') [enabled by default] >> warning: initialization from incompatible pointer type [enabled by >> default] >> warning: (near initialization for 'funcArray[2]') [enabled by default] >> warning: initialization from incompatible pointer type [enabled by >> default] >> >> In function 'main': >> warning: function with qualified void return type called [enabled by >> default] >> (funcArray[funcNo])() ; > > > Your functions are of prototype "void (*)(void)", not of "void (*)()". > > And the return type is "void", not "__flash void"; avr-gcc throws a > diagnostic on this. > > If you want to put the array in flash, then put funcArray in flash: > > void func1 (void) {} > void func2 (void) {} > void func3 (void) {} > > void (* const __flash funcArray[])(void) = { func1, func2, func3 } ; > > void run (unsigned char funcNo) > { > funcArray[funcNo] (); > } > > > Johann > -- Best Regards, -- Royce Pereira _______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org https://lists.nongnu.org/mailman/listinfo/avr-gcc-list