繁体   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