2016-10-18 6 views
0

내가 C에 새로 온 사람과 최근에 나는 내가 정적 무효의 *에 좀 혼란 스러워요 (업무 관련) zeromq 배우고 때C에서 '정적 void *'의 의미는 무엇입니까?

... 
static void * 
worker_task(void *args) 
{ 
... 

그 라인의 정확한 의미는 무엇입니까? 나는 대답을 찾으려고 노력했다, 나는 그것이 포인터라고 생각했다. 그러나 그 포인터가 대개 '*'다음에 변수 이름을 가지고 있다고 생각하면 좀 이상하다.

대단히 고맙습니다. 겉으로보기에는 "초보자"라는 질문에 대해 제게 무례하지 않기를 바랍니다. :)

+2

두 개의 서로 다른 줄의 분리는 효과가 없습니다. 이 예제는 한 줄에'static void * worker_task (void * args)'와 동일하다. – owacoder

+0

오, 나는 그것이 두 개의 분리 된 줄로 생각했다! 대답 해 주셔서 감사합니다. – raharaha

답변

2

worker_taskvoid *을 반환합니다.

함수 정의 앞에있는 static 키워드는 현재 컴파일 단위, 즉 특정 개체 파일 (일반적으로 여러 포함 파일이있는 원본 파일에서 빌드 됨) 내부에서만 해당 함수를 볼 수 있음을 의미합니다. 이 기능이 포함 된 파일과 링크 된 다른 오브젝트 파일에서는이 기능을 볼 수 없습니다.

+0

답변이 조금 엉성하다고 생각합니다. 함수가 헤더 파일에 나타나면 해당 헤더 파일을 포함하여 모든 사람에게 "표시"되지만 모든 번역 단위에서 별도의 엔터티가됩니다. 요점은'static'은 함수 이름에 내부 연결 *이 있음을 의미합니다. –