in referrence to following code, while generating library, what code would be included? My handler code or user callback function call???
void IRQ_Handler(void) { #if MACRO_ENABLED // My handler code #elif // User handler callback function #endif }
how should i write my code so that both sections are included in the library and the library user gets the power to chose what part he wants to be executed? i could come up with following solution.
#define MACRO_ENABLED ExecuteFlg = MACRO_ENABLED void IRQ_Handler(void) { if(ExecuteFlg) { // My handler code } else if { // User handler callback function } }
is there any other way to achieve this???
My usual path for doing this is:
// The TCallback type pre-defined 'somewhere' static TCallback MyCallback = NULL; // User of the library makes a call to the following: void SetCallback(TCallback NewCallback) { MyCallback = NewCallback; } void IRQ_Handler(void) { if(MyCallback==NULL) { // My handler code } else { (MyCallback)(); } }
Some IDEs providers (like Keil), some developer and third parties provide libraries. How do they achieve this??
Or do they just give a compiled code library with all the functions (at expense of consuming more code area)??
Is there a need of more intelligent library generator tools?? Has it been ages since someone thought about modifying the compiling-linking process??
Did you read that line before hitting the post button?
You need to read up on how a library is linked into a project.
You definitely need to read up on how a library is linked into a project.