3
아래 코드를 시도했습니다.함수 포인터 타입 변환
int TestMethod(int a, int b)
{
printf("In TestMethod %d, %d \r\n", a, b);
return 0;
}
int main(void)
{
void (*ap_cb_function)() = (void(*)())TestMethod;
ap_cb_function();
return 0;
}
gcc 컴파일러와 잘 작동합니다. 그러면 출력이 a와 b의 임의의 값으로 인쇄됩니다. 이게 어떻게 작동합니까?
void (*ap_cb_function)() = (void(*)())TestMethod;
"gcc 컴파일러에서 잘 작동합니다."컴파일러 isn 프로그램을 실행하지 않습니다. 그게 얼마나 나쁜지에 상관없이 당신이 명시 적으로 지시 한대로 코드를 생성하는 것입니다. 원한다면'int * p'로 캐스팅하고'* p = 1; '이라고 쓰면 동작은 ** undefined **처럼됩니다. – WhozCraig
필자는 [ideone] (http://ideone.com/avSl8H)에서 이것을 시도했으며 성공적으로 –