| 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; | |
| } |