2017-09-02 50 views
2

對於像的形成不良的C++程序:成功編譯不合格程序是否符合標準?

foo^@#$bar%$ 

它是符合標準的編譯器,以產生編譯的二進制與診斷信息,而不是中斷爲g ++/++鐺做編譯?

intro.compliance是狀態:

如果程序包含任何可診斷規則的違反或 出現本標準作爲 文所述的構建的「有條件支持」時,實現不不支持構造的 ,一致性實現應至少發出一個 診斷消息。

在這種情況下不需要編譯錯誤。

可能相關:

回答

5

是的,這是法律的執行,以產生一個二進制當輸入是一種病態的程序。下面是[intro.compliance]/8在C++ 14:

一致性實現可以具有延伸部(包括附加的庫函數),只要它們不 改變任何結構良好的程序的行爲。根據本國際標準,需要實施方案來診斷程序 使用不合格的擴展。但是,這樣做後,他們可以編譯並執行這些程序。

在這種情況下,診斷通常會被稱爲「警告」(而不是「錯誤」)。