프리 컴파일 된 헤더를 사용하여 VS2012에서 매우 기본적인 프로젝트를 진행했습니다. stdafx.h에 "common"include를 모두 추가해야하고 각 .cpp 파일에이 파일을 포함시켜야한다는 것을 알고 있습니다. 따라서, 기본 설정은 다음과 같습니다VS2012 프리 컴파일 헤더 : 내 .h 파일이 stdafx.h에 포함 된 것을 어떻게 알 수 있습니까?
Foo.h :
#ifndef FOO_H
#define FOO_H
class Foo {
public:
Foo();
~Foo();
void do(string str);
};
#endif
foo.c를 :
#include "stdafx.h"
#include "Foo.h"
void Foo::do(string str) {}
에 stdafx.h에서 :
#include <string>
using namespace std;
미리 컴파일 된 헤더없이 , string
선언에 대해 알고 있어야하므로 #include <string>
을 foo.h에 넣었습니다. 그러나 foo.h가이 설정에서 string
을 어떻게 알 수 있습니까? stdafx.h는 .cpp 파일에만 포함됩니다.
참고 : 미리 컴파일 된 헤더를 사용하는 작업 예제가 있습니다. 질문은 이것이 어떻게 작동하는지에 관한 것입니다.
스타일 노트 : 헤더 파일에'using namespace std;'를 두는 것은 실제로 전역 이름 공간을 오염시킵니다. 대신에 명시 적 네임 스페이스 사용하기 (예 :'std :: string' 참조) – Joe
@Joe : 올바르게 이해하는지 확인하기 위해 :'namespace std; 대신에 문자열이 필요할 때마다'std : string'을 사용해야합니까? – mort