8 비트가 아닌 문자가있는 플랫폼에는 어떤 종류의 고려가 필요합니까?
예를 들어 변속 할 때 마법 번호가 발생합니다.
이들 중 대부분은 CHAR_BIT 및 예를 들어 8 및 255 (또는 유사한) 대신 UCHAR_MAX를 사용하여 매우 간단하게 처리 할 수 있습니다.
희망적으로 당신의 구현은 그것들을 정의합니다 :)
"일반적인"문제입니다 .....
또 다른 간접적 인 문제는 다음과 같습니다.
struct xyz {
uchar baz;
uchar blah;
uchar buzz;
}
이것은 하나의 플랫폼에서 24 비트 만 "만"(가장 좋은 경우) 취할 수 있지만 다른 곳에서는 72 비트가 필요할 수 있습니다.
각 uchar에 "비트 플래그"가 있고 각 uchar에 현재 사용중인 2 개의 "유의 한"비트 또는 플래그 만 있고 "명확도"를 위해 3 개의 uchar로만 구성한 경우 상대적으로 "더 낭비"가 될 수 있습니다. 24 비트 uchar가있는 플랫폼
비트 필드는 해결할 수 없지만 조심해야 할 다른 것들이 있습니다 ....
이 경우, 하나의 열거 형만으로 실제로 필요한 "가장 작은"크기의 정수를 얻을 수 있습니다.
아마도 실제 예제는 아니지만 코드를 이식 / 재생할 때이 "비트"와 같은 것들 .....
만약 uchar가 "정상적으로"예상되는 것보다 3 배 크다면, 그러한 구조는 일부 플랫폼에서 많은 메모리를 낭비 할 수 있습니다. "..." "일반적으로"큰 문제는 아닙니다 .... .
따라서 uchar가 다른 플랫폼보다 사용 가능한 RAM에 비해 한 플랫폼에서 "매우 낭비가 적지 않다"는 가정으로 인해 여전히 "손상"되거나이 경우 "많은 메모리를 매우 빠르게 낭비"할 수 있습니다. ..
예를 들어 int 또는 다른 유형의 경우 더 두드러 질 수 있습니다. 예를 들어 15 비트가 필요한 일부 구조가 있으므로 int에 고정하지만 다른 플랫폼에서는 int가 48 비트 또는 기타입니다 .... .
"일반적으로"2 uchar로 나눌 수 있지만, 예를 들어 24 비트 uchar에서는 하나만 필요합니다.
열거 형이 더 나은 "일반적인"솔루션이 될 수 있습니다 ....
그래도 비트에 액세스하는 방법에 따라 다릅니다. :)
따라서 머리를 뒤로하는 "디자인 결함"이있을 수 있습니다 ... 코드가 uchar 또는 uint의 크기에 관계없이 여전히 작동 / 실행될 수있는 경우에도 ...
코드에 "마법의 숫자"가 없더라도주의해야 할 사항이 있습니다 ...
이것이 의미가 있기를 바랍니다 :)