開発者が構造体自体ではなく、構造体の最初の要素のアドレスをコピー/比較/設定するときに一貫して使用する、さらに別のコードベースを見つけました。簡単な例を次に示します。
まず、構造体型があります。
typedef struct {
int a;
int b;
} foo_t;
次に、そのような構造体のコピーを作成する関数があります。
void bar(foo_t *inp)
{
foo_t l;
...
memcpy(&l.a, &inp->a, sizeof(foo_t));
...
}
私自身memcpy
はそのような方法で への呼び出しを記述しませんでした。元の開発者が C のポインターと構造体を完全に把握していなかったのではないかと疑うことから始めました。一般的な開発者なので、自分自身を疑い始めています。
なぜこのスタイルを使用したいのでしょうか?