Programing

왜 단순히 cout 대신 std :: cout입니까?

lottogame 2020. 12. 3. 07:24
반응형

왜 단순히 cout 대신 std :: cout입니까?


나는 모두를 위해 이러한 오류 메시지 수 coutendl:

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;

수업에서, 그것이 효과가 있었던 이유입니다.


네임 스페이스를 사용할 수 있습니다.

http://www.daniweb.com/software-development/cpp/threads/109029/what-its-the-use-of-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

반응형