Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
12/06/04 17:57
Read: times


 
#82635 - Jolly good!
Responding to: ???'s previous message
I said:
I've not tried this, but...

Erik Malund said:
It works beautifully, I have used it

Jolly good!

however I did long ago choose using macro instead as a standard procedure. Using macro, rather than #include allow you to have macro parametres which gives you the opportunity to have a few variables or whatever that differ in the 2 cases.

That'd be true.

My one concern with recommending a macro here is that 'C' macros do have serious traps for the unwary, and are therefore not to be taken in hand unadvisedly, lightly, or wantonly...

Of course, the #include approach could be "customised" with conditional compilation; eg,
shared.c
static void shared_fn( void )
{

#ifdef ISR
   // your ISR-specific code here
#endif

#ifdef MAIN
   // your main-specific code here
#endif

   // your general code here
}
isr.c
#define ISR       // enable ISR-specifics
#include shared.c // Creates a *local* function

void isr( void ) interrupt x using y
{
   // your ISR code here

   shared_fn(); // Calls *local* function

   // more ISR code here
}
main.c
#define MAIN      // enable MAIN-specifics
#include shared.c // Creates a *local* function

void main( void )
{
   // your main code here

   shared_fn(); // Calls *local* function

   // more main code here
}

As I said, I've not done this in practice, so haven't investigated the pros & cons of the two approaches - that is left as an exercise for the reader...

Of course, whichever way you go, we're dealing with the 'C' Preprocessor here; for any problems, see Andy's Handy Hint for Debugging Preprocessor Problems:
http://www.8052.com/forum/read.phtml?id=29152


List of 19 messages in thread
TopicAuthorDate
89s52 function sharing.            01/01/70 00:00      
   Try This            01/01/70 00:00      
      emphasis            01/01/70 00:00      
         an idea...            01/01/70 00:00      
            Andy, I tried it            01/01/70 00:00      
               Jolly good!            01/01/70 00:00      
            Error            01/01/70 00:00      
               You need to work on it            01/01/70 00:00      
   reentrant ?            01/01/70 00:00      
      reentrant            01/01/70 00:00      
   non-reentrant            01/01/70 00:00      
   Wow            01/01/70 00:00      
   varaible sharing?            01/01/70 00:00      
      Variable sharing            01/01/70 00:00      
      Overflow            01/01/70 00:00      
      variables, main and ISR            01/01/70 00:00      
         Globals use more memory            01/01/70 00:00      
      Isn't that a global?            01/01/70 00:00      
         Globals, ISRs, main, & static            01/01/70 00:00      

Back to Subject List