Referencing Glogal Structures  CW for Coldfire 6.4

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Referencing Glogal Structures  CW for Coldfire 6.4

1,326 Views
BillH
Contributor I
In a file Globals.c I have a structure defined.
 
static struct
{
 int16 nHarmonics;
 int16 HIndex[16];
 uint16 HAmplitude[16];
 uint16 HPhase[16]; 
}g_stWaveforms[6];
When I try to access the structure in other .c files using
 
external struct g_stWaveforms[];
 
Error   : illegal use of incomplete struct/union/class 'struct g_stWaveforms'
Command_Processor.c line 17   extern struct g_stWaveforms[]; 
 
Error   : undefined identifier 'g_stWaveforms'
Command_Processor.c line 72      g_stWaveforms[t_tmp_ui16a].nHarmonics =Get16( &g_CommandBuffer[t_cmd_offset+3);
 
How can I resolve this?
 
Thanks
Labels (1)
0 Kudos
2 Replies

299 Views
CrasyCat
Specialist III
Hello
 
Well there are several problems in this code snippet.
  1- If the variable is defined a static in the file globals.c, it will not be visible outside of that module.
     So if you want to use that variable in another module remove the static modifier in front of the
     variable definition in globals.c
  2- If the variable has a structured type, this type should be known from all module using that variable.
 
I would suggest you the following:
  1- Define a file globals.h, where you define a typedef for the structured type. It is also good practice
       (or programming style) to insert the external declaration for the variable in this module.
      For example:
          typedef  struct 
          {
             int16 nHarmonics;
             int16 HIndex[16];
             uint16 HAmplitude[16];
             uint16 HPhase[16]; 
          }t_stWaveforms;
 
          extern t_stWaveforms g_stWaveforms[];

   2- Include globals.h in globals.c and define the variable there.
      For Example
         #include "globals.h"
          t_stWaveforms g_stWaveforms[6];
   3- Include globals.h in each C source file where you want to use the variable g_stWaveforms.
 
Note that this is all standard ANSI C modular programming rules. You may also refer to your favorite ANSI C reference manual for more information around that subject.
 
I hope that helps.
CrasyCat
0 Kudos

299 Views
BillH
Contributor I
Thanks,

It's be a decade or more since I did any C programming and I've got to re-awaken all of the old dead brain cells.  I got everything working. 

Thanks again.

Bill
0 Kudos