#include <iostream>
#include <cstdarg>

using namespace std;

extern "C"
int accumulateFunction (int count, ...)
{
 int res = 0;
 va_list args;
 va_start(args, count);
 for (int i = 0; i < count; ++i)
  res += va_arg(args, int);
 
  va_end(args);
  return res;
}

int accumulate3Function (int fst, int snd, int thd)
{
 return fst + snd + thd;
};



typedef	int (*sum3Function)(int, int, int);

int main()
{
 sum3Function sum;
 
 sum = accumulate3Function;
 std::cout << sum (2,3,4) << std::endl;
 
 sum = reinterpret_cast<sum3Function>(accumulateFunction);
 std::cout << sum (2,3,4) << std::endl;
 
 return 0;
};