최근에 나는 마쥴을 쓰려고했습니다. 내 코드의 많은 부분에서 사용자 입력을 기반으로 결정해야했습니다. 인스턴스의 경우 사용자 입력 8 비트 또는 16 비트를 기반으로 버퍼 유형을 선택해야했습니다. 이 코드를 구현하고 내 일을했다 :사용자 입력에 따라 한 번만 결정하는 우아한 방법이 있습니까?
if (requestedbitsNumber == 8)
mxMalloc(sizeof(unsigned __int8)*NumberOfElements);
if (requestedbitsNumber == 16)
mxMalloc(sizeof(unsigned __int16)*NumberOfElements);
지금은 매크로와 다른 사람이 사용자의 입력에 따라 한 번만 결정 같은 것을 정의하는 우아한 방법이 궁금? 다음과 같이 입력하십시오 :
if (requestedbitsNumber == 8)
#define dataType unsigned __int8
if (requestedbitsNumber == 16)
#define dataType unsigned __int16
그리고 필요에 따라 datType
을 사용하십시오. 나는 #define
이 전 처리기 지시어이며 코드가 컴파일되기 전에 사용된다는 것을 알고 있습니다. 나는 그것을 의미하는 것을 보여주기 위해서만 사용했습니다. 감사.
데이터 유형, 당신은 (당신이'를 sizeof로 설정 일부'size_t' 변수를 가질 수있다 "저장" 서명되지 않은 __intX)'(여기서 X는 올바른 숫자 임). 또는, 단지'mxMalloc (requestedbitsNumber/8 * NumberOfElements);'를 실행하십시오. – Cornstalks
내 버퍼를 만드는 위치가 맞습니다. 하지만 특정 유형의 포인터에 무효 포인터를 캐스팅해야하는 경우는 어떨까요? 'myUin16Pointer = (unsigned __int16 *) myVoidPointer; '와 같은 것 – GntS