문제는 다음 코드에서 설명합니다.C++ 제네릭 프로그래밍의 미묘한 차이
#include <iostream>
#define X 4
int main()
{
std::cout << "should be 4: " << X << std::endl;
#define Y X + 4
std::cout << "should be 8: " << Y << std::endl;
#undef Y
#define Y X+0
#undef X
#define X Y+1
std::cout << "expecting 5: " << X << std::endl;
}
오류 :
test2.cc: In function ‘int main()’:
test2.cc:17: error: ‘X’ was not declared in this scope
(많은 nginx 모듈 wired up at compile-time을 얼마나 좋아) 나는/코드에서 프로그램을 확대하고 모방 수준을 구축을 위해 노력하고 패턴입니다. 확장 가능한 컴파일 시간 구조를 구축해야합니다.이 구조는 내 플러그인에 #include
을 추가하면 boostable-mpl-vector에 고유 한 이름이 추가됩니다. 따라서 X
이 고유 한 끝 이름 인 경우 X_0, X_1, X_2는 벡터에 적용된 벡터 mpl-push_back
이있는 과정에서 생성되는 이름입니다. 부스트의
내가 알고 추상성 :: 전처리 키,하지만 난 결국 될 시스템의 일부 프로토 타입거야 나는, 그냥 아직 연구에 시간을 커밋 컴파일을 시간을 원하지 않는 모듈화.
그래서, 나중에 참조 할 수 있도록,
- 이유는 위의 오류는 무엇입니까?
- 올바른 원시 프로세서 패턴이 어떻게 생겼을 까?
- 올바른 부스트 - 전 처리기 라이브러리 패턴은 어떻게 생겼습니까?
당신은 C++ 컴파일러가 컴파일하려고하는 것을보기 위해 전처리기를 통해 이것을 실행 해 보았습니까? –