간단한 코드 이해??? 이건 무슨 뜻인지??
글쓴이: escalix / 작성시간: 월, 2007/04/30 - 11:12오전
1. 앞의 (void)는 왜 붙이죠?
(void)::sigaction(SIGPIPE, &act, NULL);
2. 뜬금없게 :: 은 무슨 뜻인지?
::kill(sChildPID, sig);
3. extern은 알겠는데 "C"로 해서 뭘 뜻하는지?
extern "C" {
typedef int (*EntryFunction)(int input);
}
4. (void(*)(...)) 이런 난해한 코드? 그리고 (...)이건 정말 뭐하는 녀석인지?
act.sa_handler = (void(*)(...))&sigcatcher;
act.sa_handler = (void(*)(int))&sigcatcher;
5. exit도 알겠는데 왜 앞에 :: 인지?
::exit(-1);
6. pid도 알겠는데 ::를 붙여야 하는지..값이 전달되는것 같은데?
pid =::wait(&status);
------------------내용 추가-----------------------------------
7. 정말 마지막 질문 그럼 "..." 이렇게 마침표가 세개 찍은 것은 무엇인지?
int qtss_printf(const char*fmt, ...)
{
xxx
xxx
xxx
return result;
}
--------------------------------------------------------------
Forums:
:: 은 c++ 에 있는 scope
:: 은 c++ 에 있는 scope 연산자 입니다.
클래스내에 같은 이름의 kill 함수가 있을 경우
그냥 kill 하면 클래스내의 kill 함수가 호출 되니까
전역 함수인 kill 을 호출 하기 위해서 ::kill 합니다.
extern "C" 는 링커가 해당 함수를 C 함수로 링크하게 하는 겁니다.
c++ 컴파일러로 컴파일되는 코드에 있는 함수를 C 에서 호출할라면 저렇게 해야 합니다.
4번은 함수 포인터 입니다. C language 찾아보시면 금방 나옵니다.
나머지 부분입니다.
1. 함수나 수식의 void type casting은 해당 함수나 수식의 결과 값을 무시하겠다는 선언이라고 합니다. sigaction() 함수의 결과값을 어떠한 변수에도 대입하지 않겠다고 명시적으로 표시한 것으로 보시면 될 듯 합니다.
7. ...은 인자의 갯수가 가변이라는 뜻입니다. 이 선언을 사용하는 대표적인 예가 printf() 함수인데요 printf에는 인자를 몇개를 쓰든지 관계없이 처리가 되는 것을 볼 수 있을 겁니다.
댓글 달기