typedef int A;
typedef int B;
void foo(A arg){}
void main(void){
B wrongvar = 7;
foo(wrongvar);
}
這個結構是否應該按照標準返回一個警告/錯誤?最受歡迎的編譯器呢?使用'typedef'來確保邏輯類型的安全
例如:我們有變量,代表千克和米,都是'int'類型。我們有一個功能,處理儀表。我們希望編譯器捕捉錯誤,這與將千克含義變量變量傳遞給該函數有關。
我相信Ada處理順利。現代C呢?
一個'typedef'給出了一個新的名稱改爲現有類型;它不會創建一個新的類型。替代名稱也指相同類型。因此,所有'A','B','int'和'signed int'都可以傳遞給'foo(A arg)',而不會違反類型(其他類型可以轉換爲'int',比如'enum'類型,也可以傳遞而不引發警告)。 – 2013-04-28 17:21:06
'void main(void)'應該是'int main(void)' - 任何引用告訴你使用'void main(void)'是由不熟悉C的人編寫的。 – 2016-03-02 21:06:03
@KeithThompson,c99似乎[支持](http://stackoverflow.com/a/9356660/1145760)這種使用'void main(void)'。誤解是因爲我沒有正確地標記問題。 – Vorac 2016-03-07 08:16:12