pipe( int fd[2] ) 질문입니다.!

seeker의 이미지

int pipe( int fd[2] )
라고 선언이 되어있는데요.

int fd[2]라는 인수선언은 int *fd로 표현하는것이 더일반적이지 않나요?

어차피 fd[2]라고 해도
함수내부에서 fd+3 또는 fd[3]이란 표현이 사용될지라도
컴파일러에 의해 out of 인덱스체크는 안되지 않습니까?

단지, 파이프가 2개의 fd를 리턴하므로 그것을 알리려는 목적때문에 그렇게
선언이 되있는것으로 생각이 됩니다.

sliver의 이미지

말씀하신게 모두 맞습니다...ㅡ.ㅡ;

jj의 이미지

좀 심하네요

상수(2)로 선언을 해도, 상수 3으로 접근하는것을 아무말도 안해주다니...

경고도 안뜨나요? 거참...

--
Life is short. damn short...

kslee80의 이미지

제 기억으로는 gcc 2.95 이상에서는(gcc 이전버전은 사용해본 적이...^^;;)
컴파일 타임에 경고를 띄웁니다.
물론, int fd[2]; 같이 Explicit 하게 선언한 경우에 한해서죠..

추가합니다;;
맨 처음 글 쓴분이 든 예중에 fd+3 같은 방식으로 접근하는 것에
대해서는 경고를 띄우지 않습니다 =_=;;;;;