ホストされているシステムでは、標準でmain
が "int
の宣言された戻り値タイプ"で定義されている必要があります。ここで宣言されているのは、「返された型の推定」なので、この質問の目的のためにその単語を無視することができます。 Cでは、標準で明示的にtypedef
のint
に使用できる脚注がありますが、これはC++標準にはありません。私はその意図が言語が「戻りタイプのタイプint
」であり、「戻り値int
」およびtypedef
が単に別名であり、別のタイプではないと仮定しよう。したがって、このプログラムは法律とみなされます:この「メイン」の定義はどのように有効ですか?
typedef int boobs;
boobs main() { }
これを代わりに行うとどうなりますか?多くのシステムでは
#include <cstdint>
int32_t main() {}
int32_t
だけでint
ではなく、すべてのシステムであるとして、これはコンパイルされます。私の混乱は、int32_t
が実装定義の値であるという事実に由来します。つまり、コンパイルの失敗は実装に依存します。
この状況の合法性は何ですか?プログラム全体がコンパイルされているかどうかを判断できないので、プログラム全体が不正ですか?あるいは、それは標準ライブラリから来る実装定義の値に依存するため、整形式ですか?
'私たちはその言葉を無視することができるので、この - –
の私をこのままにしておいてください。つまり、 'int32_t'が' int'の場合にのみ動作し、 'int'を最初に使用することができます。 – user463035818
"コンパイルの失敗は実装に依存します "---はい、それはまれではありません – Brian