Возможно, расположение в памяти двух версий структуры не одинаково? Я попробовал это в gcc:
#include <stdio.h>
struct WTO_PARM {
unsigned short len;
unsigned short code;
char *text;
};
int main()
{
struct WTO_PARM moo = { 4+11,0,"hello" };
printf("size %zu struct %p string %p\n", sizeof(struct WTO_PARM),&moo,moo.text);
return 0;
}
Вот результаты:
size 8 struct 0x22cce0 string 0x402000
Однако, если я изменю тип текстового параметра на char [80], результаты изменятся на:
size 84 struct 0x22cc80 string 0x22cc84
Инструкция ВТО, вероятно, ожидает, что строка будет упакована прямо в эту структуру.