Правильно только это: /***** .h - заголовок *****/
#pragma pack(1)
struct tsPacked1 /* Это объявление/declaration типа структуры, память не выделяет и на него действует pragma pack */
{
char a,b,c;
};
#pragma pack()
#pragma pack(1)
typedef struct /* опционально тэг структуры */
{
char a,b,c;
} tsPacked2; /* Это объявление/declaration типа структуры, память не выделяет и на него действует pragma pack */
#pragma pack()
/***** .c-файл *****/
struct tsPacked1 spacked1; /* Это объявление/declaration имени переменной и одновременно определение/definition (выделяет память), pragma pack на него не действует, действует из заголовка */
tsPacked2 spacked2; /* Это объявление/declaration имени переменной и одновременно определение/definition (выделяет память), pragma pack на него не действует, действует из заголовка */
/***** либо .c-файл, либо заголовок, но объявления структур выше должны быть видны *****/
extern struct tsPacked1 spacked1; /* Это объявление/declaration имени переменной (не выделяет память), pragma pack на него не действует, действует из заголовка */
extern tsPacked2 spacked2; /* Это объявление/declaration имени переменной (не выделяет память), pragma pack на него не действует, действует из заголовка */