2010-08-13 7 views
3

일반적으로 콜백은 함수 포인터로 구현됩니다. PortAudio의 소스 코드를 확인할 때 콜백 함수가 일반 함수 (f 포인터가 아닌)로 선언 된 것을 볼 수 있습니다. 그것은 정상적인/법적/권장입니까?함수 포인터가없는 콜백

typedef int PaStreamCallback(
const void *input, void *output, 
unsigned long frameCount, 
const PaStreamCallbackTimeInfo* timeInfo, 
PaStreamCallbackFlags statusFlags, 
void *userData); 

답변

4

그것은 파라미터

PaError Pa_OpenStream (
     PaStream **  stream, 
     const PaStreamParameters *  inputParameters, 
     const PaStreamParameters *  outputParameters, 
     double  sampleRate, 
     unsigned long framesPerBuffer, 
     PaStreamFlags streamFlags, 
     PaStreamCallback *  streamCallback, // <--- 
     void *  userData  
    ) 
+0

확인 감사 같은 (a 함수에포인터이다) PaStreamCallback*로서 사용되는만큼 미세하다. 그건 그렇고, 함수는 Pa_OpenStream에 이름으로 만 전달됩니다. 그러나 논리적으로는 addressof 연산자로 전달해야하지만 &를 생략하면 바로 가능합니까? –

+3

@paul'foo'가 함수이면'foo'와'& foo'는 동일합니다. – kennytm