在託管系統中,標準要求main
應使用「int
類型的聲明返回類型」進行定義。這裏的「聲明」屬於「推導出的返回類型」,因此我們可以忽略該詞用於此問題。在C語言中,該標準明確指出typedef
可用於int
,但在C++標準中缺少該腳註。我打算假設語言是「返回類型int
」和「()返回int
」的函數,而typedef
只是一個別名,而不是一個不同的類型。因此這個程序將被認爲是合法的:「main」的這個定義合法嗎?
typedef int boobs;
boobs main() { }
如果我們這樣做呢?
#include <cstdint>
int32_t main() {}
在很多系統中,這將編譯爲int32_t
只是int
,但不是所有的系統。我的困惑源於這樣的事實:int32_t
是一個實現定義的值,這意味着編譯失敗取決於實現。
那麼這種情況的合法性是什麼?整個程序是否因爲有時可以編譯而不合格?還是它是格式良好的,因爲它取決於來自標準庫的實現定義的值?
'所以我們可以忽略這個詞 - '離開這個 –
我會用這個嗎?我的意思是,如果它只有在'int32_t'只是'int'的情況下才起作用,那麼你可以首先使用'int' – user463035818
「編譯失敗取決於實現」---是的,可能發生,沒什麼不尋常的 – Brian