C++ (및 C)의 전 처리기는 참조 된 파일의 텍스트를 #include
문을 사용하는 파일로 효과적으로 복사하여 작동합니다.
그래서 당신은 다음과 같이 코드를 작성할 때
Something.h
int my_rand() {
return 4; //chosen by dice roll, guaranteed to be fair
}
하여 Main.cpp
#include "Something.h"
int main() {
return my_rand();
}
적절한 컴파일 전에 최종 파일이 시작과 같습니다.
int my_rand() {
return 4; //chosen by dice roll, guaranteed to be fair
}
int main() {
return my_rand();
}
매우 이상한 동작이 발생합니다
class my_class {
#include<fstream>
/*...*/
};
같은 것을 쓰는 귀하의 경우에는
, 거의 확실히 컴파일되지 않습니다, <fstream>
의 전체 내용은 중간에 복사됩니다 때문에 클래스를 작성하거나 클래스를 다른 클래스에 삽입하는 것을 처리하기 위해 작성된 코드는 <fstream>
입니다.
그러나 프로그램 중간에 #include
을 할 수있는 경우가 있습니다. 관찰 :
내 Resource.txt
R"D(
Blah Blah Blah Blah Blah
)D"
에게 제대로 콘솔에
Blah Blah Blah Blah Blah
을 인쇄합니다
int main() {
std::string blah_string = "" //The "" is unnecessary, but I use it to make Intellisense shut up
#include "My Resource.txt"
;
std::cout << blah_string << std::endl;
return 0;
}
하여 Main.cpp
를, 그것은
를 작성 같은 때문에
int main() {
std::string blah_string =
R"D(
Blah Blah Blah Blah Blah
)D"
;
std::cout << blah_string << std::endl;
return 0;
}
다음은 사용자 소모품에 대한 질문에 대한 답변입니다. http://stackoverflow.com/questions/7347033/including-headers-inside-class-declaration-definition – NathanOliver
표준 헤더 IMHO의 경우 전역 공간에 포함해야합니다 우두머리의 시작 부분에. – NathanOliver
@NathanOliver이 예제는 표준 헤더를 사용합니다. 클래스 정의에 표준 헤더를 포함시키는 시나리오는 거의 상상할 수 없습니다. –