Expand|Select|Wrap|Line Numbers
- typedef struct {
- uint16_t n;
- uint32_t m;
- char filename[1024];
- } MY_TYPEDEF
Expand|Select|Wrap|Line Numbers
- // for no padding binary output to file
- #pragma pack(1)
- typedef struct {
- uint16_t n;
- uint32_t m;
- char filename[]; // empty array
- } MY_TYPEDEF_NO_PACK
- #pragma pack(0)
Expand|Select|Wrap|Line Numbers
- MY_TYPEDEF_NO_PACK tmp_struct;
- ...
- fwrite(tmp_struct, 1, sizeof(MY_TYPEDEF_NO_PACK), fp);
BUT, if i redefine the typedef within my other output function like this:
Expand|Select|Wrap|Line Numbers
- #pragma pack(1)
- typedef struct {
- uint16_t n;
- uint32_t m;
- char filename[strlen(data->filename)];
- } MY_TYPEDEF_NO_PACK
- #pragma pack(0)
- MY_TYPEDEF_NO_PACK tmp_struct;
- ...
- fwrite(tmp_struct, 1, sizeof(MY_TYPEDEF_NO_PACK), fp);
It works, but i want to know if this can be ported to other platform.
THERE WERE NO ERROR or WARNINGS from the gcc... even with -W
Any thought?