typedef struct byte_array { byte *data; // array of bytes this struct is meant to represent int size; // number of bytes the structure possesses int bitsRead; // number of bits contained in the structure (this is different than 8 * size)} byte_array_s;

void add_byte(byte_array_s *byteArray, const byte _byte);

#endif

And this is the code that is throwing the error (currentByte is of type 'byte' and byteArray is a pointer to a byte_array_s BTW):

this is a "link" error; your definition is fine, but there doesn't appear to actually be an "add_byte" function created anywhere in your sketch.(the "void add_byte(byte_array_s *byteArray, const byte _byte);" statement you have is a "prototype" that describes what the function looks like without actually creating any code. The code is what is missing.)

I should have been more clear. I DO have the code defined in a separate file (byte_array_s.c). This file is saved in the same directory as the others. I presumed that the IDE would link them all together?

The ".c" files do show up as sperate tabs in the IDE but the only way I can get them to compile is to include them in the original sketch. :-/ Is this a known issue or is anyone else experiencing these problems?

Building the modules on the command line works but the Make file I downloaded seems to have trouble compiling the sketch itself (it is looking for a file that doesnt exist: 'WRandom.cpp') so that was a dead-end. Is there an updating Makefile (the md5sum for the file I have is cf4933cf13ee4d194060c76c69fa9471)?