2010-06-21 1 views
5

Qt는 지원되는 플랫폼에서 일부 데이터 유형의 크기를 보장합니다. int이 될 것이며 적어도은 32 비트이고, qint32은 32 비트가 될 것입니다. 또는 다른 것? int는 적어도 16 비트, 및 QRect 및 사용 QPointint 내부적에게 추천 Qt는 일부 구조가 될 것이다int는 Qt가 지원하는 각 플랫폼에서 32 비트가 보장되거나 qint32 만 보장됩니까?

C++ 보장한다. 이러한 유형의 경우 32 비트가 필요한 응용 프로그램을 개발 중이므로 더 큰 유형을 사용할 수 있도록 기능을 복제하지 않아도됩니다.

답변

6

정수형의 크기는 컴파일러에 달려 있습니다. 나는 평범한 int이 정확한 크기가 될 것이라는 보장이 없다고 생각합니다. 하지만 당신은 당신이 당신의 main()의 시작 부분에이 줄을 추가하여 당신이 원하는하지 알고 있는지 확인 할 수 있습니다

if(sizeof(int) != 4) { 
    throw std::runtime_error("int is not 32-bit"); 
} 
+0

그러나 'QtGlobal'은 몇 가지 typedef를 정의합니다. 예를 들어, qint32에 대한 문서에는 "signed int에 대한 typedef가 있습니다.이 유형은 Qt에서 지원하는 모든 플랫폼에서 32 비트가됩니다." 그래서 이것은 'int'가 지원되는 모든 플랫폼에서 32 비트로 보장되어야한다는 것을 의미합니까? –

+0

나는 그 결론을 도출하지 않을 것이다. 이 문서는 지원되는 모든 플랫폼에서 qint32가 32 비트 크기가되도록 보장합니다. 미래에 int가 32 비트가 아닌 플랫폼을 지원해야하는 경우 해당 플랫폼의 typedef가이를 반영하도록 변경됩니다. 이제 구현되었으므로 Qt에서 지원하는 모든 플랫폼에 32 비트 int가 있다고 가정 할 수 있습니다. 그러나 가정은 매우 사악합니다. –

+1

qint32와 친구들의 목적은 서명과 크기가 보장 된 유형을 제공하는 것입니다. 표준 형식이 제공한다면, Qt typedef는 필요 없을 것입니다.) Qt 문서가 여기에 모호하게 표현되어 있습니다. –

0

동안은, 내가 아는 한, 그것은 INT가 32 비트 아니라고 기술적으로 가능, 내가 ' 플랫폼이 아닌 플랫폼을 본 적이 없습니다. 상상해 보라 - char, 8bits, short, 16bits, int, .. 24bits? 단지 32 비트가 아닌 int의 계층 구조에 맞지 않습니다.

또한 UINT_MAX를 사용하여 지정된 컴파일러에서 int의 크기를 확인할 수 있습니다.

+0

int가 16 비트 인 마이크로 컨트롤러가 수없이 많습니다. – Falmarri

+0

크기 ('sizeof' 연산자를 사용하여 얻음)와 ** 최소 ** 비트 수 ('UINT_MAX'의 값을 나타낼 수 있음)는 서로 다른 두 가지입니다. http://stackoverflow.com/q/271076/95735를 참조하십시오. –

관련 문제