簡體   English   中英

array[x, y] 是有效的 C 表達式嗎?

[英]Is array[x, y] a valid C expression?

當參考以下關於宏https://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC12的文檔時,我看到 array[x, y] 作為參數傳遞。 它是有效的 C 表達式嗎? 如果是這樣,它有什么作用?

請注意,文檔中的相關代碼正在討論如何處理 arguments 到宏的細節:

實際 arguments 中的括號必須平衡; 括號內的逗號不會結束參數。 但是,不需要括號或大括號來平衡,並且它們不會阻止逗號分隔 arguments。 因此,

 macro (array[x = y, x + 1])

將兩個 arguments 傳遞給宏: array[x = y and x + 1] 如果您想提供array[x = y, x + 1]作為參數,則必須將其寫為array[(x = y, x + 1)] ,這相當於 C 代碼。

另外,請注意 GCC 版本 2.95 文檔非常舊(可以追溯到1999 年)。 這些天您通常不需要咨詢。 也就是說,這方面在此期間沒有改變。

如評論中所述,在宏的上下文之外,符號:

array[x = y, x + 1]

使用逗號運算符計算 LHS(賦值x = y ),然后使用 RHS(表達式x + 1 )作為數組的索引。 如果沒有一些帶有副作用的語句(例如賦值或 function 調用),則表示法毫無意義。 然而,它的定義很好。 並且在逗號運算符的 LHS 和 RHS 的評估之間存在一個序列點,這在示例中很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM