2009-11-10 2 views

답변

5

코드를 컴파일 할 CPU를 알지 못해서 어렵습니다. 예를 들어 PIC18 마이크로 칩의 C18 컴파일러는 User Guide 다음 상태 기본 유형 크기 : C.

표준없는이 ( short long)을 몇 가지 유형을 포함

TYPE    SIZE  RANGE 
char(1,2)   8 bits -128 127 
signed char   8 bits -128 127 
unsigned char  8 bits 0 255 
int     16 bits -32,768 32,767 
unsigned int  16 bits 0 65,535 
short    16 bits -32,768 32,767 
unsigned short  16 bits 0 65,535 
short long   24 bits -8,388,608 8,388,607 
unsigned short long 24 bits 0 16,777,215 
long    32 bits -2,147,483,648 2,147,483,647 
unsigned long  32 bits 0 4,294,967,295 

참고

+0

이 값은 PIC18 제품군에 대한 마이크로 칩의 C18 컴파일러 용이라고 명시 할 수 있습니까? 나는 연결된 사용자 가이드가 그 정보를 제공한다는 것을 알고 있지만,이 대답을 여기에 포함시키기에 더 완벽 할 것입니다. 또한 질문에 컴파일러와 대상 마이크로 컨트롤러가 지정되어 있지 않으므로 유형이 다른 대상의 크기가 다를 수 있다는 점을 강조해야합니다. –

1

나는 그런 일반화의 경계 것 . MPLAB은 단지 IDE 일뿐 아니라 다른 칩에 적합합니다. 마이크로 칩은 PIC18F, 16 비트 및 32 비트 컨트롤러와 같은 8 비트 컨트롤러를 제공합니다. 각각에 대한 데이터 유형은 다를 수 있으며 성능에 심각한 영향을 미칠 수 있습니다. 나는. 8 비트 칩의 경우 16 비트 및 32 비트 데이터 유형이 소프트웨어에서 에뮬레이트 될 수 있습니다. 이는 항상 원하는 것은 아닙니다.

1

int, long 등의 값은 모든 컴파일러에서 표준으로 정의되지 않습니다 (reference). 이러한 이유로,이 라이브러리를 사용하도록 권장 다음과 같이

#include <stdint.h> 

자신의 목적을 위해이 라이브러리의 사용을 만들려면을, 코드를 사용해보십시오 :

typedef uint8_t BYTE 
typedef uint16_t WORD 
typedef uint32_t LONG 

그런 다음 당신은 그냥 사용 이것들은 당신의 변수를 정의합니다. 이 메소드는 대개 integer.h 파일을 사용하여 이러한 정의를 저장하며 필요할 때마다 포함됩니다.

-2
#include<stdint.h> 
long x; 

이 두 가지가 나를 도왔습니다.) 나머지 정보. 다른 사람들이 이미 공유하고 있습니다.

0

다음은 서로 다른 MPLAB XC 컴파일러에서 정수 데이터 유형을 구현 한 것입니다. 8- 비트 디바이스 용

  1. 데이터 형식 (XC8 컴파일러에 구현) : 16 비트 장치 enter image description here

  2. 데이터 형식 (XC16 컴파일러에 구현) enter image description here

  3. 데이터 32 비트 장치 유형 (XC32 컴파일러 구현) :

관련 문제