매크로 매개 변수를 기반으로 함수 및 변수를 생성하는 전 처리기 매크로가 있습니다. 매크로가 헤더 파일에 정의되어있는 매크로가전처리 기 : 동적 이름으로 함수를 생성하십시오. 다중 정의 문제
Inst* AActivate() { ... }
bool Atemp;
Inst* BActivate() { ... }
bool Btemp;
같은 것을 생성하는 것입니다 B A와 매크로 sequently를 호출
은 내가 링커 오류가 이미 정의 된 심볼에 대해 저를 알리는 얻을. #pragma를 한 번 사용하고 있지만 헤더 내에 함수를 구현할 때 문제가 있다고 생각합니다.
여기에 매크로의 :
#define REGISTER(ns, id, type) \
Inst* type##Activate() { return new type(); }\
bool type##temp = RegisterType(ns << 8 | id, &type##Activate);
가 지금은 그런 문제를 처리하는 방법을 궁금해. 첫 번째 아이디어는 #define-Guards를 사용하는 것이었지만 분명히 C++에서는 불가능한 중첩 된 #define이 필요했습니다. 나는 boost와 함께 가능한 해결책에 대해 읽었지만 unfortunaetly, 나는이 라이브러리들을 사용할 수 없다.
아이디어가 있으십니까?
는
같은
C에서이 보일 것입니다 뭔가 그가 나에게 유선있다 ... 나는 이미 #DEFINE 매크로 내에서 * 활성화-기능 인라인을 정의하기 위해 시도했지만 놀랍게도 여러 정의 오류가 계속 발생 해 주셔서 감사합니다 – mbue
Ah nevermind, stupid me ... 나는 VS 내에서 잘못된 프로젝트 파일을 컴파일했다. 인라인을 사용하면 물론 작동합니다. 고맙습니다 – mbue