MCPcopy Create free account
hub / github.com/Apress/beginning-rust-2e / main

Function main

Source Code/07-17.c:4–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2Error: X*/
3#include <stdio.h>
4int main() {
5 enum eResult {
6 Success,
7 Failure,
8 Uncertainty
9 };
10 struct sResult {
11 enum eResult r;
12 union {
13 char value;
14 struct {
15 unsigned short error_code;
16 char module;
17 } s;
18 } u;
19 } outcome;
20 /*
21 outcome.r = Success;
22 outcome.u.value = 1;
23 */
24 outcome.r = Failure;
25 outcome.u.s.error_code = 20;
26 outcome.u.s.module = 'X';
27 switch (outcome.r) {
28 case Success:
29 switch (outcome.u.value) {
30 case 0:
31 printf("Result: 0");
32 break;
33 case 1:
34 printf("Result: 1");
35 break;
36 default:
37 printf("Result: other");
38 break;
39 }
40 break;
41 case Failure:
42 switch (outcome.u.s.error_code) {
43 case 10:
44 switch (outcome.u.s.module) {
45 case 'X':
46 printf("Error: 10 X");
47 break;
48 default:
49 printf("Error: 10");
50 break;
51 }
52 break;
53 default:
54 switch (outcome.u.s.module) {
55 case 'X':
56 printf("Error: X");
57 break;
58 default:
59 printf("Error: other");
60 break;
61 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected