내가 완전히 이식 가능하고 특정 아키텍처에 묶이지 않기를 원하는 C 프로그램 (C99 또는 C2011)을 작성하고 싶다고 가정 해 보겠습니다.정수 타입이 C
그것은 내가 다음 이전 정수 타입 (int
, long
, short
)과 친구로부터 깨끗한 휴식을 확인 하 고 만int8_t
, uint8_t
, int32_t
등 (아마도 사용을 사용하고 싶을 것 같다하여 least
및 fast
버전).
다음 반환 유형은 main
입니까? 아니면 우리는 int
와 strick해야합니까? 표준에 따라 int
이 필요합니까?
GCC-4.2
날#include <stdint.h>
#include <stdio.h>
int32_t main() {
printf("Hello\n");
return 0;
}
를 작성하지만 내가
hello.c:3: warning: return type of ‘main’ is not ‘int’
이 때문에 타입 정의, 의심의 여지입니다를 얻을 수 있기 때문에 내가 uint32_t
또는 int8_t
을 사용할 수 있습니다. 반환 형식을 대상 아키텍처로 두지 않는 한 불특정 크기 유형을 사용해야하는 경우가있는 것 같습니다. 이 해석이 맞습니까? 코드베이스에 "단지 하나"의 평범한 오래된 코드가있는 것은 이상한 것처럼 보입니다.하지만 실용적으로 기쁘게 생각합니다.
'main()'의 리턴 타입으로'int'를 사용하면 어떤 이식성 문제가 있다고 느끼십니까? – JasonD
int는 모든 컴퓨터에서 컴파일된다는 점에서 이식성이 뛰어납니다. 이제 12344567891233445567을 반환하려고 할 때 문제가 발생하지만 마지막으로 그랬을 때 정직하게 생각해 보겠습니다. 반환하는 모든 숫자는 비교적 작아야합니다. 예 : 에러 코드. –
'int'를 사용하면이 경우에 프로그램을 이식성있게 만드는 반면, 다른 곳에서는 이식성이 고정 된 크기 유형을 사용해야한다고 생각합니다. 아마도 그것은 단지 필요한 비대칭 일 것입니다. –