템플릿을 광범위하게 사용하는 타사 C++ 라이브러리를 다루고 있습니다. 따라서 내 프레임 워크에서 C API를 사용하기가 어렵습니다.런타임 인수로 템플릿 브리징
extern "C" void c_foo(int i);
extern "C" void c_zoo(int i, int v);
명백한 구현 될 수있다 :
내가 함수 머리와 C API를 만들template <int i> void foo();
template <int i> void zoo(int v);
: 문제 추상화
는 라이브러리 기능을 제공합니다 가정
void c_foo(int i)
{
switch(i) {
case 1: foo<1>(); break;
case 2: foo<2>(); break;
case 3: foo<3>(); break;
default: break;
};
};
그리고 void zoo(int)
도 마찬가지입니다.
i
에 가능한 값의 범위가 작은 경우 제대로 작동합니다. [1,100]에서 i
의 가능한 모든 값을 처리하려는 경우 반복이 많으므로이 방법으로 코드를 작성하는 것은 대단히 추악합니다.
코드를 작성하는 방법이 더 간단합니까? 아마도 재귀 전 처리기 매크로를 사용하고 있을까요?
_ "아마도 재귀 전 처리기 매크로 사용?"_ 할 일이 많은 도우미 매크로를 제공하는 여러 라이브러리가 있습니다. 예 : 부스트 전 처리기 lib. – user0042