As params there should be pairs (-name, value). If the name of the param is absent - then it is accepted as 'source'.

Current version support two params types: -src and -cache.

-src param describe header file. May be \*FILEHANDLE or 'path/to/file.h'.

-cache say, that was cached the compiled header file. If the value of this parameter is absent and -src the parameter describes path to the file, the cache the file, will be created as 'Path/to/file.ph'. Pay attention that, while the value of this parameter is absent and -src the parameter is \*FILEHANDLE, the cache the file will not be created.

If first param is scalar, then it is binary data to unpacking. Otherwise if first param is \*FILEHANDLE, then input binary data will be reader from this file. If 'size' param not defined then from file will be readed same counte of bytes as struct length. Param 'offset' describe count of bytes to skip before reading binary data. Default offset equal 0;

* Q: Where I may see module tested header file?
A: Tested header file on which this package it
tested included in distribudion as 'test.h'
* Q: Why module work not correct?
A: Probably in your computer the old version required(demanded) Storable.pm
with an error is installed.

If you want to create array of bytes for definitions as array of chars, you must change type, for example, to 'byte':

struct array{
char path[__MAXPATH]; // first string field
byte flags[12]; // second field as array of unsigned chars
}
or
#define BYTE char
struct array{
char path[__MAXPATH]; // first string field
BYTE flags[12]; // second field as array of signed chars
}

2. All properties of C::Include::Struct object be in element with key {''}. Do not delete and do not change them!:

delete $header_struct->{''};

3. You can describe in headers exclusive definitions like compiller sensivity

in this sample code:
1 typedef struct HEADER{
2 word revision;
3 byte reserved[1024]; // in wraper object will be allocated
4 }; // array with 1024 elements and take CPU
// to process in every pack/unpack operation
line 3. best replace to
char reserved[1024]; // will be created one string element
// with length 1024
or
#ifndef __PERL__
#define nullbyte byte
#endif
nullbyte reserved[1024]; // this 1024 bytes will be skiped
// in operations pack/unpack and
// not allocated in wraper object
// as element

5. Note, that the current version processes of the preprocessor commands only once, before parsing of the main code!