왜 단순히 cout 대신 std :: cout입니까?
나는 모두를 위해 이러한 오류 메시지 수 cout
및 endl
:
main.cc:17:5: error: ‘cout’ was not declared in this scope
main.cc:17:5: note: suggested alternative:
/usr/include/c++/4.6/iostream:62:18: note: ‘std::cout’
제안을 따르면 모든 것이 정상입니다. 이제 왜 그렇게해야했는지 궁금합니다. 이전에는 클래스에서 C ++를 사용했지만 std::
이러한 명령을 먼저 작성하지 않아도되었습니다 . 이 시스템에서는 무엇이 다를 수 있습니까?
수업이 사전 표준 C ++를 사용했을 가능성이 있습니다. 쉽게 알 수있는 방법은 이전 프로그램을보고 확인하는 것입니다.
#include <iostream.h>
또는
#include <iostream>
전자는 사전 표준이며 추가 사항 없이는 cout
반대로 말할 수 있습니다 std::cout
. 다음을 추가하여 표준 C ++에서 동일한 동작을 얻을 수 있습니다.
using std::cout;
또는
using namespace std;
어쨌든 한 가지 아이디어입니다.
C ++ 표준에서는 네임 스페이스에 cout
정의되어 std
있으므로 말 std::cout
하거나 넣어야합니다.
using namespace std;
그것을 얻기 위해 코드에서.
그러나 항상 그런 것은 아니며 과거 cout
에는 글로벌 네임 스페이스 (또는 나중에 글로벌 및 std
) 에만 있었습니다. 따라서 클래스가 이전 C ++ 컴파일러를 사용했다고 결론을 내립니다.
표준 템플릿 / Iostream 라이브러리의 모든 것은 std 네임 스페이스에 있습니다. 아마도 다음을 사용했을 것입니다.
using namespace std;
수업에서, 그것이 효과가 있었던 이유입니다.
네임 스페이스를 사용할 수 있습니다.
하지만 누군가를 불쾌하게 할 수 있습니다.
"namespace std 사용"이 나쁜 습관으로 간주되는 이유는 무엇입니까?
아마도 using namespace std;
수업에서했던 코드에서 전에 있었을 것입니다 . 이는 프리 컴파일러가에서 기호를 찾도록 명시 적으로 알려줍니다. 즉 std
, std::
. std::cout
대신 매번 cout
명시 적으로 호출 하는 것이 좋습니다 std::cout
. 당신이 재정의이 또 다른 라이브러리를 사용하는 경우 그 방법 cout
, 당신은 여전히이 std::cout
아닌 다른 사용자 정의 행위의 행동을.
"std"는 STL (Standard Template Library)에 사용되는 네임 스페이스입니다. http://en.wikipedia.org/wiki/Namespace_(computer_science)#C.2B.2B를 참조하세요 .
"use namespace std;"라고 작성할 수 있습니다. stl 함수, 변수를 사용하기 전에 또는 그 앞에 "std ::"를 삽입하십시오.
루트에서 작업하는 경우, 당신도 작성하지 않아도 #include<iostream>
및 using namespace std;
단지에서 시작 int filename()
.
이것은 문제를 해결할 것입니다.
참고 URL : https://stackoverflow.com/questions/10950083/why-stdcout-instead-of-simply-cout
'Programing' 카테고리의 다른 글
서버의 자동 django 수신 후크 : "yes"로 collectstatic에 응답 (0) | 2020.12.03 |
---|---|
확률로 항목을 선택하는 방법은 무엇입니까? (0) | 2020.12.03 |
Swift의 UIWebView에서 URL을로드하는 방법은 무엇입니까? (0) | 2020.12.03 |
Swift에서 현재 뷰 컨트롤러 클래스를 어떻게 확인합니까? (0) | 2020.12.03 |
파이썬에서 "문자열"과 "문자열"사이에 차이가 있습니까? (0) | 2020.12.03 |