import gdb-1999-06-28 snapshot
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / varargs.c
CommitLineData
c906108c
SS
1/* varargs.c -
2 * (Added as part of fix for bug 15306 - "call" to varargs functions fails)
3 * This program is intended to let me try out "call" to varargs functions
4 * with varying numbers of declared args and various argument types.
5 * - RT 9/27/95
6 */
7
8#include <stdio.h>
9#include <stdarg.h>
10
11int find_max1(int, ...);
12int find_max2(int, int, ...);
13double find_max_double(int, double, ...);
14
15char ch;
16unsigned char uc;
17short s;
18unsigned short us;
19int a,b,c,d;
20int max_val;
085dd6e6 21long long ll;
c906108c
SS
22float fa,fb,fc,fd;
23double da,db,dc,dd;
24double dmax_val;
25
085dd6e6 26int main() {
c906108c
SS
27 c = -1;
28 uc = 1;
29 s = -2;
30 us = 2;
31 a = 1;
32 b = 60;
33 max_val = find_max1(1, 60);
34 max_val = find_max1(a, b);
35 a = 3;
36 b = 1;
37 c = 4;
38 d = 2;
39 max_val = find_max1(3, 1, 4, 2);
40 max_val = find_max2(a, b, c, d);
41 da = 3.0;
42 db = 1.0;
43 dc = 4.0;
44 dd = 2.0;
45 dmax_val = find_max_double(3, 1.0, 4.0, 2.0);
46 dmax_val = find_max_double(a, db, dc, dd);
085dd6e6
JM
47
48 return 0;
c906108c
SS
49}
50
51/* Integer varargs, 1 declared arg */
52
53int find_max1(int num_vals, ...) {
54 int max_val = 0;
55 int x;
56 int i;
57 va_list argp;
58 va_start(argp, num_vals);
59 printf("find_max(%d,", num_vals);
60 for (i = 0; i < num_vals; i++) {
61 x = va_arg(argp, int);
62 if (max_val < x) max_val = x;
63 if (i < num_vals - 1)
64 printf(" %d,", x);
65 else
66 printf(" %d)", x);
67 }
68 printf(" returns %d\n", max_val);
69 return max_val;
70}
71
72/* Integer varargs, 2 declared args */
73
74int find_max2(int num_vals, int first_val, ...) {
75 int max_val = 0;
76 int x;
77 int i;
78 va_list argp;
79 va_start(argp, first_val);
80 x = first_val;
81 if (max_val < x) max_val = x;
82 printf("find_max(%d, %d", num_vals, first_val);
83 for (i = 1; i < num_vals; i++) {
84 x = va_arg(argp, int);
85 if (max_val < x) max_val = x;
86 printf(", %d", x);
87 }
88 printf(") returns %d\n", max_val);
89 return max_val;
90}
91
92/* Double-float varargs, 2 declared args */
93
94double find_max_double(int num_vals, double first_val, ...) {
95 double max_val = 0;
96 double x;
97 int i;
98 va_list argp;
99 va_start(argp, first_val);
100 x = first_val;
101 if (max_val < x) max_val = x;
102 printf("find_max(%f, %f", num_vals, first_val);
103 for (i = 1; i < num_vals; i++) {
104 x = va_arg(argp, double);
105 if (max_val < x) max_val = x;
106 printf(", %f", x);
107 }
108 printf(") returns %f\n", max_val);
109 return max_val;
110}
111
This page took 0.031178 seconds and 4 git commands to generate.