簡體   English   中英

為什么這個交換宏不會編譯?

[英]Why won't this swap macro compile?

K&R 2nd ed答案書為可變參數交換宏提供了以下解決方案

#define swap(t, x, y) { t _z; \   
                       _z = y; \ 
                       y = x; \  
                       x = _z; } 

Visual Studio Express告訴我y和x必須是常量值,並且右括號左邊有一個“預期聲明”。

這種格式是否過時了?

編輯:

代碼格式化的方式不會讓我編譯上面列出的錯誤,但以下代碼似乎沒問題:

#define swap(t, x, y) { t _z; _z = y; y = x; x = _z; }

問題是你在\\ line continuation字符后面有空格。 因此, \\不再被視為行繼續,而只是非空白字符。 這意味着以下行不是宏定義的一部分,編譯器會嘗試將它們編譯為普通行。 在每個\\之后擺脫空白將修復錯誤。

暫無
暫無

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

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