完全に移植可能で、特定のアーキテクチャに縛られないようにしたいCプログラム(C99またはC2011)を作成したいとします。
次に、古い整数型( int
、、)とその仲間から完全に切り離し、、などのみを使用したいと思うようです(おそらく、とバージョンも使用します)。long
short
int8_t
uint8_t
int32_t
least
fast
それでは、リターンタイプはmain
何ですか?それとも私たちは攻撃しなければなりませんint
か?規格ではそうする必要がありますint
か?
GCC-4.2で書くことができます
#include <stdint.h>
#include <stdio.h>
int32_t main() {
printf("Hello\n");
return 0;
}
でも使えない、uint32_t
それでもint8_t
hello.c:3: warning: return type of ‘main’ is not ‘int’
これは間違いなくtypedefによるものです。リターンタイプをターゲットアーキテクチャに任せない限り、実際には移植性がないため、これは不特定のサイズタイプを使用しなければならないという1つのケースのようです。この解釈は正しいですか?コードベースに「たった1つ」の古いものがあるのは奇妙に思えint
ますが、実用的であることを嬉しく思います。