[英]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.