변경할 필요가없는 id_vector
이라는 정수 벡터의 초기화에 문제가 있습니다.다른 플랫폼에 대해 하드 코드 된 int의 벡터 초기화
이니셜 라이저는 다음과 같이 수행됩니다
static int id[4]{200,300,400,500};
id_vector = std::vector<int> (id,id + (sizeof(id)/sizeof(int)));
를 지금까지 너무 좋아. 하지만 이제는이 소프트웨어의 다른 버전이 있어야하며 버전에 따라 다른 ID 배열을 선택하고 싶습니다. 내가 생각할 수있는 유일한 방법은 #ifdef
또는 일종의 매크로를 사용하는 것입니다.하지만 누군가가 더 나은 방법을 알고 있는지 궁금합니다. 네임 스페이스와 같은 것을 생각하고 있었지만 이것이 좋은 사용법인지는 모르겠습니다.
UPDATE는 미안 코드에서 오타를했다. 미안 내가 분명히하지 않았지만 기본적으로 이것은 유효한 ID 목록이며 다른 유효한 ID가 필요한 두 가지 버전이 있습니다. 더 많은 코드를 추가 할 필요가 있다고 생각하지 마십시오. 당신이 다른 플랫폼에 대해 서로 다른 값을 넣어해야하고, 당신이 코드에서 일어나는 변화를해야하는 경우
바람직하지 않음) 또는 포함 된 라이브러리/설정 등에서 다를 수 있습니까? 네임 스페이스를 사용할 수는 있지만 전처리기를 사용하여 참조되거나 포함 된 네임 스페이스를 전환해야합니다. config에서 실행 시간 값을 가져올 수 있습니다. ifdefs와 매크로가 가능하다. 빌드 시스템의 일부에서 링크 할 os 특정 오브젝트를 지정할 수 있습니다. –
@dasblinkenlight가 오타를 수정했습니다. –
@TonyD 더 많은 코드를 포함하고 싶었지만 근본적으로 유효한 정수 값이기 때문에 특정 문제에 대한 자세한 사양이 다른 사람들에게는 도움이되지 않을 것이라고 생각했기 때문에 일반 코드로 유지하려고했습니다. –