개발 중에 #ifdef를 사용하여 다른 유형의 동작을 전환하는 것이 좋은 방법입니까? 예를 들어 기존 코드의 동작을 변경하고 싶습니다. 동작을 변경하는 방법에 대한 몇 가지 아이디어가 있으며 다른 구현을 전환하여 다른 방법을 테스트하고 비교해야합니다. 일반적으로 코드 변경은 복잡하며 다른 파일의 다른 메소드에 영향을 미칩니다.
나는 보통 몇 가지 식별자를 소개하고 그런 식으로 뭔가를한다.
void foo()
{
doSomething1();
#ifdef APPROACH1
foo_approach1();
#endif
doSomething2();
#ifdef APPROACH2
foo_approach2();
#endif
}
void bar()
{
doSomething3();
#ifndef APPROACH3
doSomething4();
#endif
doSomething5();
#ifdef APPROACH2
bar_approach2();
#endif
}
int main()
{
foo();
bar();
return 0;
}
이를 통해 서로 다른 접근 방식 사이를 빠르게 전환하고 하나의 소스 코드 사본으로 모든 것을 수행 할 수 있습니다. 개발에 대한 좋은 접근 방법입니까 아니면 더 나은 방법이 있습니까?
#ifdef
블록이 꺼져 있으면 일부 IDE는 블록의 아무것도 평가하지 않습니다 . 일상적으로 모든 경로를 작성하지 않으면 코드가 쉽게 고칠 수 있고 컴파일되지 않는 경우가 발생했습니다.
#ifdefs
덜 성가신 많은 방법을 제시합니다 .