2014년 11월 14일 금요일

Define, Enum 의 효율적 사용

 프로그램을 할때 Define이 어쩔수 없이 들어갈 때가 있다. 그게 조금씩 쌓이다 보면 관리가 힘들어져서 아래와 같이 쓰고 있다. 보통 헤더파일 하나에 아래와 같은 항목들을 여러개 추가해서 사용하면 편하다.

[-] Collapse
namespace ADW  //네임스페이스로 앞으로 디파인할 것들을 묶어준다. Define의 중복방지.
{
    struct Receipe_Cmd // 공통적인 항목들에 대해, Define대신에 Enum을 사용했다.
    {
        enum
        {
            Grab=0,
            Calibration=1,
            MakeLcdImage=2,
            LineDetect=3,

            NumSize = 4,
        };
    };

    //Enum으로 Define한것들에 대해 동일하게 String으로 뽑아 낼 수 있도록 추가했다.
    const string Receipe_CmdName[Receipe_Cmd::NumSize] =
    {
        "Grab",
        "Calibration",
        "MakeLcdImage",
        "LineDetect",
    };

    //String으로 Enum을 뽑아 낼 수 있도록 inline 함수도 추가했다.
    inline int GetReceipeCmdNum(string strCmd)
    {
        int i=0;
        for(;i<Receipe_Cmd::NumSize;i++)
        {
            if(Receipe_CmdName[i]==strCmd)
                break;
        }
        return i;
}

댓글 없음:

댓글 쓰기