Я занимаюсь разработкой приложения на C / C ++, в котором я использую упакованные члены структуры. Я читал, что мы никогда не должны передавать адрес упакованных членов структуры какой-либо функции (я всегда использовал, чтобы получить ошибки выравнивания при передаче упакованных членов структуры посредством ссылки на функции в качестве аргументов). Поэтому я хочу знать, применимо ли это даже в случае встроенных функций sscanf и т. Д. Это мой фрагмент кода
#pragma pack(push,1)
struct A
{
char a;
short b;
int c;
};
#pragma pack(pop)
int main(int argc, char* argv[])
{
struct A abc;
char ch[100];
...
//read some data from file into character array ch
sscanf(ch,"%hu %d",&abc.b,&abc.c);
...
return 0;
}
Я использую свое приложение для архитектуры Power PC.