2012-03-09 41 views
13

如何在C中調用構造(int) { 1 }?猜測是「匿名常量」,但這對Google沒有任何幫助。作爲旁註,您可以使用此構造來告訴ioctl您想要使用值爲1的變量:ioctl (..., &(int) { 1 })這個構造(int){1}如何被調用?

+0

請注意'int'是'{1}'的錯誤類型。它應該是'(int []){1}'。 – 2012-03-09 12:23:03

+2

@jørgensen:不,這是有效的。類型由加括號的部分決定,可能是一個簡單的類型,例如'int'。 – 2012-03-09 12:25:05

回答

13

它被稱爲「compound literal」並構造了一個臨時的int型左值。

+0

感謝您的鏈接。 – Sven 2012-03-09 11:49:17

+0

還要注意,複合文字是左值,當通過指針傳遞時,就像這裏所做的那樣,可以改變。在上面的調用中,temp值可能會被ioctl()修改,這可能是一個難以發現的錯誤。 – 2012-03-09 11:57:08