K& R第二版答案书为变量参数交换宏
提供了以下解决方案#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; }
答案 0 :(得分:12)
问题是你在\
行延续字符后面有空格。因此,\
不再被视为行继续,而只是非空白字符。这意味着以下行是不宏定义的一部分,并且编译器尝试将它们编译为普通行。在每个\
之后删除空白将修复错误。