2016-09-22 4 views
1

일부 C++ 교과서는 printf과 같은 C 함수를 std::printf (<stdio.h>이 아닌 <cstdio>을 통해 포함)으로 사용합니다.std 네임 스페이스에서 C 함수를 사용해야합니까?

그러나 Github에서 본 대부분의 C++ 코드 (전문 개발자가 작성한 코드 포함)에서는 <stdio.h>printf 만 사용합니다. 어떤 제정신 프로그래머도 그의 기능을 printf 또는 다른 유명한 C 함수 이름으로 지칭하지 않습니다. 다른 독자는 혼란에 빠지기 쉽습니다.

더 많은 문자를 입력하는 것 외에 std::printf을 사용하면 실질적인 이점이없는 것처럼 보입니다.

+4

단지 pedagonian 인 다양한 수준. –

+1

'printf()'가 다른 라이브러리에 정의되어 있다면'std ::'는'cstdio'의 것을 사용하고 있음을 나타낼 것입니다 : – PhotometricStereo

+3

나는이 포스트가 약간을 설명 할 수 있다고 생각합니다. http://stackoverflow.com/questions/10460250/cstdio-stdio-h-namespace – soundslikeodd

답변

0

C++의 네임 스페이스를 사용하면 C 함수와 충돌하는 함수를 정의 할 수 있습니다. stdio.h 대신 cstdio을 포함하고 std::printf을 사용하면 stdio의 이름을 바꾸지 않고도 rename이라는 함수를 사용할 수 있습니다. 실제로 네임 스페이스가 필요한 것입니다.

+0

C 표준 라이브러리의 모든 이름은 전역 이름 공간에 예약되어 있습니다. – aschepler

관련 문제