더북(TheBook)

Write()Read()를 템플릿으로 만들면, 여기서 ByteSwapper를 사용하여 엔디언이 서로 다른 런타임 플랫폼의 차이를 감지하고 지원할 수 있다.

template<typename T> void Write(T inData)
{
    // 원시 자료형인지 여부를 컴파일 타임에 검사
    static_assert(
        std::is_arithmetic<T>::value ||
        std::is_enum<T>::value,
        “Generic Write only supports primitive data types”);
 
    if (STREAM_ENDIANNESS == PLATFORM_ENDIANNESS)
    {
        Write(&inData, sizeof(inData));
    }
    else
    {
        T swappedData = ByteSwap(inData);
        Write(&swappedData, sizeof(swappedData));
    }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.