ONC+ 開発ガイド

共用体

XDR 共用体は識別された共用体であり、C 共用体には似ていません。XDR 共用体は 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;

出力 struct の共用体構成要素が、後に付いている _u を除いて型の名称と同じ名称であることに注意してください。