完全に移植可能で、特定のアーキテクチャに縛られないようにしたいCプログラム(C99またはC2011)を作成したいとします。
次に、古い整数型( int、、)とその仲間から完全に切り離し、、などのみを使用したいと思うようです(おそらく、とバージョンも使用します)。longshort int8_tuint8_tint32_tleastfast
それでは、リターンタイプは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ますが、実用的であることを嬉しく思います。