GBA 용 자작 게임을하고 있으며 PC (SDL 사용 가능성이 높음)로 이식하려고합니다. 이전에는 멀티 플랫폼 지원의 문제를 다루지 않았기 때문에 어떤 경험도 없었습니다.멀티 플랫폼 지원, 전처리 기 또는 개별 라이브러리와의 연결
나는 두 가지 가능한 방법을 생각해 냈지만 두 가지 모두 단점이 있으며 더 나은 해결책이 있는지 놓치고 있습니다.
먼저 전처리기를 사용합니다. 헤더 파일은 #define GBA
인 모든 파일에 포함되며, 정의되어 있는지 여부에 따라 적절한 헤더가 포함되며 해당 플랫폼 고유 코드가 플랫폼 용으로 컴파일됩니다.
나는 그것을
/* GBA definition is in platform.h */
/* Example.c */
void example()
#ifdef GBA
{
/* GBA specific implementation goes here */
}
#else
{
/* PC specific implementation goes here */
}
#endif
내가 여기에서 볼 대규모 프로젝트입니다 단점 같은 것을 구현하는 것이이 매우 혼란스러워 솔직히 종류의 추한 어려운 읽을 수 있습니다.
내가 생각할 수있는 다른 옵션은 각 플랫폼에 대한 정적 라이브러리를 만드는 것입니다. 따라서 두 플랫폼의 주요 소스 코드는 동일하므로 동시 개발이 쉬우 며 GBA 또는 PC 용으로 빌드 할 때 적절한 라이브러리 및 설정이 지정됩니다.
여기에 명백한 단점은 라이브러리에 무언가의 구현이 변경되어야 할 필요가있는 경우, 무언가를 추가해야하거나 실제로 라이브러리와 관련이있는 경우 지속적으로 유지 관리 및 재구성해야한다는 것입니다. 주요 실제 프로그램과.
더 좋은 방법이 있다면 어떻게 될까요? 내가 언급 한 방식이 표준 방식으로 수행되는 것이 더 일반적이며 장기적인 개발에 유리합니까?
이동 : 여기
는 SDL 코드가
다음은 일반적인 코드입니다. 장기적으로는 유지 관리가 더 쉬워 질 것입니다. –