2012-03-16 1 views
0

"참조되지 않은 형식 매개 변수" 경고를 발행하는 이유는 무엇입니까? an existing SO post에서이 경고는 프로그래머가 함수에주의를 기울이는 데 유용하며 (코드를 사용하여 일부 연산을 수행하는 것을 잊었을 때) 코드 유지에 유용합니다 (매개 변수가 생략되지 않았 음을 미래 개발자에게 알리기 위해) , 의도적으로 제외되었다). 스타일에 대한 우려와는 별도로, 프로그래머는 왜 사용하지 않는 매개 변수에 대해 경고하고 싶어 하는가? 값으로 전달 된 경우 이러한 매개 변수가 복사됩니까?"참조되지 않은 형식 매개 변수"가 왜 걱정해야합니까?

void myFunction(int param) { 
} 
+1

값으로 전달되면 복사됩니다. – Mahesh

+0

'param'을 제거 할 수 있습니다. 따라서'void myFunction (int)'로 남았습니다. 혼란 스러울 수도 있지만. 때로는 주석 처리 된 매개 변수'void myFunction (int/* param * /)'를 볼 수 있지만 C++ 코드베이스에서 C 스타일 주석을 사용하는 것이 싫다. –

답변

3

매개 변수 사용을 잊어 버릴 가능성을 방지하고 유지 관리가 용이 ​​한 코드를 작성하기 위해 충분한 이유가 있습니다.

사용되지 않는 매개 변수의 성능에 영향을 줄 수있는 이유는 추가 이유이지만 주 특성은 아닙니다.

1

지정되지 않았지만 함수 정의에서 매개 변수 이름을 생략해도 이진 코드가 변경되지는 않는다는 것이 좋습니다.

사용 가능한 함수 선언 만있는 컴파일 단위는 매개 변수를 복사할지 여부를 알 수 없습니다. 다른 컴파일 단위는 함수 호출에 정상적인 최적화를 적용 할 수 있으며 소금을 필요로하는 옵티 마이저는 함수 시작시 매개 변수가 제대로 작동하지 않는다는 것을 알 수 있습니다.

따라서 성능에 대해서는 걱정하지 않으셔도됩니다. 순수한 이유는 가독성입니다.

관련 문제