va-meth-1.m

来自「linux下编程用 编译软件」· M 代码 · 共 70 行

M
70
字号
/* Based on objc/execute/va_method.m, by Nicola Pero *//* { dg-do run } */#include <objc/Object.h>#include <stdarg.h>#include <stdlib.h>/* Test methods with "C-style" trailing arguments, with or without ellipsis. */@interface MathClass: Object/* sum positive numbers; -1 ends the list */+ (int) sum: (int)firstNumber, int secondNumber, ...;+ (int) prod: (int) firstNumber, int secondNumber, int thirdNumber;+ (int) minimum: (int) firstNumber, ...;@end@implementation MathClass+ (int) sum: (int)firstNumber, int secondNumber, ...{  va_list ap;  int sum = 0, number = 0;  va_start (ap, secondNumber);  number = firstNumber + secondNumber;  while (number >= 0)    {      sum += number;      number = va_arg (ap, int);    }    va_end (ap);  return sum;}+ (int) prod: (int) firstNumber, int secondNumber, int thirdNumber {  return firstNumber * secondNumber * thirdNumber;}+ (int) minimum: (int)firstNumber, ...{  va_list ap;  int minimum = 999, number = 0;    va_start (ap, firstNumber);  number = firstNumber;    while (number >= 0)    {      minimum = (minimum < number ? minimum: number);      number = va_arg (ap, int);    }    va_end (ap);    return minimum;}@endint main (void){  if ([MathClass sum: 1, 2, 3, 4, 5, -1] != 15)      abort ();  if ([MathClass prod: 4, 5, 6] != 120)      abort ();  if ([MathClass minimum: 17, 9, 133, 84, 35, -1] != 9)      abort ();    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?