XDR 共用体は識別型の共用体で、C 共用体とは異なります。これらは Pascal の可変レコードに似ています。
union-definition: "union" union-ident "switch" "("simple declaration")" "{" case-list "}" case-list: "case" value ":" declaration ";" "case" value ":" declaration ";" case-list "default" ":" declaration ";"
以下は、「読み取りデータ」操作の結果として返された型の例です。エラーが発生しなければ、データのブロックを返します。 エラーがある場合は、何も返されません。
union read_result switch (int errno) { case 0: opaque data[1024]; default: void; };
この共用体は次のようにコンパイルされます。
struct read_result { int errno; union { char data[1024]; } read_result_u; }; typedef struct read_result read_result;