這行:串聯預處理:
#define hash_hash # ## #
會產生##
而是基於不是未定義行爲:
如果結果不是一個有效的預處理標記,該行爲是未定義 。
編輯:
換句話說,擴大hash_hash產生新令牌,由兩個相鄰的尖銳的跡象, 但這新令牌不是## 操作者 。
預處理標記的類別爲:
預處理標記分爲五大類:標識符, 預處理數字,字符串文字,標點符號和其他
是##
新的令牌屬於其他類別如果沒有UB。
請注意:請花些時間閱讀與之相關的問題和答案,甚至在下載之前。
您認爲未定義的行爲意味着什麼?這意味着它可以做任何事情。 –