물론 알고있는 사람들은 진작에 알았겠지만...


윈도xp계열에서

void s(char **a){ }
void main(){
char *a=0;
s(&a);    //물론, &a -> a로 바꾸면 됨.
}


이런식으로 컴파일하면 될것같지만 된다.

그러나, char **a -> char *a로 바꾸면 안된다.

오류:error C2664: 's' : cannot convert parameter 1 from 'char ** ' to 'char *'

그래서 codepad.org로 테스트를 해보았다.

http://codepad.org/h7ZyJQJZ

여기선 오류가 뜨지않는다.

다른곳에서 내용을 훝어보았지만 리눅스를 기반으로 설명하고있었다.


결론: 운영체제에 따라서 ,, 비주얼스튜디오버전에따라서,, 컴파일 하는방식이 틀리다. 그리고 저렇게 해야하는지도 오늘 처음 알았다. 참고로 배열사용할때도 마찬가지이다.