| int atoi(const char* nptr); |
| |
| void address_taken_func(int a, int b, int c) {} |
| void address_taken_func2(int a, int b, int c) {} |
| |
| int main(int argc, char** argv) { |
| int fp_v = atoi(argv[1]); |
| int fp_vi = atoi(argv[2]); |
| int fp_iii = atoi(argv[3]); |
| int fp_fffi = atoi(argv[4]); |
| int fp_ddi = atoi(argv[5]); |
| |
| void (*f_viiii)(int, int, int) = 0; |
| if (argc > 3) |
| f_viiii = address_taken_func; |
| else |
| f_viiii = address_taken_func2; |
| |
| void (*f_v)() = reinterpret_cast<void (*)()>(fp_v); |
| void (*f_vi)(int) = reinterpret_cast<void (*)(int)>(fp_vi); |
| int (*f_iii)(int, int) = reinterpret_cast<int (*)(int, int)>(fp_iii); |
| float (*f_fffi)(float, float, int) = |
| reinterpret_cast<float (*)(float, float, int)>(fp_fffi); |
| double (*f_ddi)(double, int) = |
| reinterpret_cast<double (*)(double, int)>(fp_ddi); |
| |
| f_v(); |
| f_vi(3); |
| f_iii(4, 5); |
| f_fffi(3.1f, 4.2f, 5); |
| f_ddi(4.2, 5); |
| f_viiii(1, 2, 3); |
| return 0; |
| } |