2009-08-05 5 views
1

PIC 마이크로 컨트롤러 용 마이크로 칩의 C18 컴파일러를 사용하여 컴파일 할 포트를 작성하려고합니다. 이 코드에는 큰 값이 지정된 열거 형 (> 8 비트)이 포함됩니다. 그들은 올바르게 작동하지 않습니다. 예를 들어, 0x02는 0x2002와 같습니다.C18 컴파일러 typedef 열거 형 데이터 크기

열거 형 값을 16 비트 값으로 참조하도록하려면 어떻게해야합니까?

답변

1

문제점을 발견했습니다.

나중에 참조 할 수 있도록 C18 컴파일러는 ANSI C 표준인데도 수학 연산을 수행 할 때 변수 또는 상수를 승격하지 않습니다. 이것은 8 비트 프로세서에서 실행되는 동안 속도를 높이는 것입니다.

ANSI 규격을 준수하려면 "-Oi"컴파일러 옵션을 사용하십시오.

See page 92 of the C18 manual.

1

DirectX 헤더에서 모든 열거 형은 0xffffffff의 값을 가지며 FORCE_DWORD 값을 갖습니다. 적어도 기본적으로 원하는 것입니다. 컴파일러가 열거 형을 사용하도록 설정하면 이상이어야합니다. 32 비트가 있어야합니다. 따라서 0xffff 값을 가진 FORCE_WORD을 추가하십시오.

물론이 컴파일러가 8 비트보다 큰 enum을 지원하지 않으면 문제가 해결되지 않습니다.