2011-10-13 3 views
2

그래서 OpenGL을 사용하고 있습니다.->GLuint입니다.OpenGL typedef 무시의 영향은 무엇입니까?

좀 더 일반적인 부호없는 정수 또는 uint32_t가 아닌 GLuint를 사용하여 프로그램을 뿌리는 것은 잘못된 것입니다.

typedef를 무시하는 부정적인면에 대한 의견이 있으십니까?

답변

6

typedef는 코드를 더 이식성있게 만듭니다. GLuint에 다른 기본 유형이있는 플랫폼으로 이동하려는 경우 (이유가 무엇이든) typedef을 사용하는 것이 좋습니다.

2

항상 코드가 GLuint != unsigned int 인 플랫폼으로 이식 될 가능성이 있습니다. typedef를 무시하려고하는 경우 최소한 예상 컴파일 시간과 다른 경우 컴파일 오류가 발생하는 컴파일 시간 검사를 추가하십시오.

1

일반적으로 K-ballo 및 Chad La Guardia의 답변을 참조하십시오. 이는 이러한 typedef의 취지입니다. API가 향후 버전에서 변경 될 경우 실제 데이터 유형을 숨길 수 있습니다 (OpenGL을 사용하지는 않겠지 만 실제로 발생했습니다). 데이터 유형이 변경된 경우 재 컴파일이 필요하지만 코드는 변경되지 않습니다.
그래도 도서관 개발자는 종종이 어리 석음의 특정 측면을 어리 석음의 관점에서 과소 평가한다고 말합니다.

이 특별한 경우 OpenGL 사양은 GLuint (2.4 장)에 대해 매우 명확합니다. 적어도 32 비트 길이의 부호없는 정수입니다. 그들은 해석이나 변화를위한 많은 공간을 남기지 않습니다.

하는 한, (즉 uint32_t의 매우 정의처럼), 당신은 그 대신에 uint32_t를 사용할 수없는 이유 좋은 이유가 없다가 uint32_t 이외의 다른 수 기회가 없다 당신이 경우 그렇게하는 것을 선호합니다 (GLuint를 사용하는 것 외에는 변수가 OpenGL과 함께 사용된다는 것을 명시하지만 meh는 사용하지 않습니다).
원칙적으로 은 (sizeof(long) >= sizeof(int) >= sizeof(short) 제외)의 정확한 크기에 대해서는별로 알려지지 않으므로 unsigned int과 다를 수 있습니다.

관련 문제