次の構造体と関数を検討してください
typedef struct __attribute__((__packed__)) req_file {
uint32_t start_pos;
uint32_t byte_count;
uint16_t name_len;
} req_file;
void req_file_hton(req_file *d){
d->name_len = htons(d->name_len);
d->start_pos = htonl(d->start_pos);
d->byte_count = htonl(d->byte_count);
}
void req_file_ntoh(req_file *d){
d->name_len = ntohs(d->name_len);
d->start_pos = ntohl(d->start_pos);
d->byte_count = ntohl(d->byte_count);
}
上記のコードは、多くのフィールドを持つ多くの構造体のために書くのは面倒です。構造体の名前とフィールドを一度構成し、関数struct_name_hton
とstruct_name_ntoh
生成を行いたいと思います。x マクロで少し遊んでみましたが、うまくいきませんでした。移植可能な C プリプロセッサ ソリューションが高く評価されます (C++ ではありません)。